这次介绍一些系统使用和状态方面的一些命令,继续学习Linux命令
1. lsof: list open file
使用实例如下:
# lsof -c <process-name> // 查看某个进程打开的文件
# lsof /var/log/message // 查看massage文件当前在被谁使用
# lsof -u ^root // 查看当前非root用户打开的文件信息
# lsof -p 1 // 查看1号进程打开的文件
# lsof -p `pidof vim` // 查看vim进程打开的文件,效果如同第一条
# lsof -i // 显示所有网络连接信息
# lsof -i tcp // 列出所有TCP网络连接信息
# lsof -i :22 // 查看22端口现在运行的情况
2. vnstat: a console-based network traffic monitor
安装时候后才发现,vnstat并不能算一个实时的命令,更多的像是个制作历史报告的工具。
所以暂时就不学了,有需求再来看。
PS:如果想实时使用的话,可是使用—l选项。
3. fuser: identify processing using files or sockets
基本上能用lsof替代,暂时忽略。
4. host: DNS lookup utility
使用实例如下:
# host www.baidu.com // 查看百度的IP地址
# host -a www.baidu.com // 显示详细的DNS查询消息
5. dig: DNS lookup utility
dig同样也是一个DNS查询的工具,和host互为补充吧。
# dig www.baidu.com // 对百度网址进行DNS查询
# dig +trace www.baidu.com // 从根域开始跟踪查询结果
# dig +vc www.baidu.com // 使用TCP协议查询
说道DNS,就想吐槽,大家都懂的.有兴趣的话大家可以对比下面两个命令的输出差异,对G.F.W.有一个大致的了解。
# dig +vc +trace www.baidu.com
# dig +vc +trace www.facebook.com
6. ss: another utility to invertigate sockets
ss是socket statistics的缩写,相比于netstat能够显示过多关于socket细节的信息。
同时netstat略慢,而ss更快。
# ss -a -t // a == all, t == tcp
# ss -s // s == summary, 显示socket信息摘要
# ss -l // l == listenning
# ss -p // p == processes, 显示哪些进程在用哪些socket
# ss -pl // 查看哪些进程在使用listening状态的socket
7. 关于环境变量LD_PRELOAD
环境变量LD_PRELOAD指定程序运行时优先加载的动态链接库,且其中的符号优先级是最高的。所以在使用LD_PRELOAD环境变量后,可以替换掉标准C中的函数(默认放在libc.so.6文件中)。
比如想替换掉系统默认的malloc函数,则将LD_PRELOAD设置为新的malloc函数链接库。
# LD_PRELOAD="/home/user/mymalloc.so"
关于LD_PRELOAD环境变量,这篇文章或许能让你脑洞大开。
8. at: executes commands at a specified time
与cron配置一个周期性的服务不同,at命令主要是用于一次性的任务需求中。
# at -f myscript.sh -v 10:30 // 在10:30时刻,开始执行脚本
# timer=`date +%k:%M -d '5 min'` // 得到距离当前时刻5min的时间
# at -f myscript.sh -v ${timer} // 在timer对应的时刻开始执行脚本
# atq // 查看还未执行的任务
# atrm 7 // 使用任务编号进行删除
# at -c 8 // 查看某任务编号对应的具体内容