文章目录
lsof命令选项
这个命令基本可以替代netstat 和 ps 功能十分强大
ps: 下面的一些其它东西需要牢记:
默认 : 没有选项,lsof列出活跃进程的所有打开文件
组合 : 可以将选项组合到一起,如-abc,但要当心哪些选项需要参数
-a : 结果进行“与”运算(而不是“或”)
-l : 在输出显示用户ID而不是用户名
-h : 获得帮助
-t : 仅获取进程ID
-U : 获取UNIX套接口地址
-F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止
-c:查看指定的命令正在使用的文件和网络连接
-p:查看指定进程ID已打开的内容
获取网络信息
[root@tomcat ~]# lsof -i
3. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4. dhcpcd 6061 root 4u IPv4 4510 UDP *:bootpc
5. sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
6. sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)
显示所有的连接
#显示所有的连接
[root@tomcat ~]# lsof -i
#显示ipv4的网络连接
[root@tomcat ~]# lsof -i 4
查看某个端口显示的网络信息
你也可以通过端口搜索,这对于要找出什么阻止了另外一个应用绑定到指定端口实在是太棒了。(检查端口占用问题)
lsof -i :80
只显示TCP/UDP连接
[root@tomcat ~]# losf -i tcp/udp
#也可以显示任何已建立的连接
[root@tomcat ~]# lsof -i -sTCP:ESTABLISHED
[root@tomcat ~]# lsof -i -sTCP:LISTEN
检查某个用户在干什么
检查某个用户干了什么
[root@tomcat ~]# lsof -u root
排除root用户做的事情
[root@tomcat ~]# lsof -u ^root
干掉指定用户运行的所有东西
[root@tomcat ~]# kill -9 `lsof -t -u daniel`
查看指定主机的连接
[root@tomcat ~]# lsof -i@10.0.0.7
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 36536 root 3u IPv4 1390238 0t0 TCP test.lixin.com:ssh->10.0.0.1:60604 (ESTABLISHED)
也可以查看主机和端口之间的连接
这对于你在检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用
[root@tomcat ~]# lsof -i@10.0.0.7:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 36536 root 3u IPv4 1390238 0t0 TCP test.lixin.com:ssh->10.0.0.1:60604 (ESTABLISHED)
显示指定目录交互的一切包括用户和进程等
lsof /var/log/nginx/error.log
高级用法
同时使用-t和-c选项以给进程发送 HUP 信号
kill -HUP `lsof -t -c sshd`
lsof +L1显示所有打开的链接数小于1的文件
这通常 (当不总是)表示某个攻击者正尝试通过删除文件入口来隐藏文件内容。
lsof +L1
显示某个端口的打开的连接
lsof -i @fw.google.com:2150=2180
资源
lsof手册页:http://www.netadmintools.com/html/lsof.man.html
小结
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c abc 显示abc进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程 www.2cto.com
lsof -i 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4位置
service --> /etc/service中的 service name (可以不只一个)
port --> 端口号 (可以不只一个)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp - TCP protocol hosthaha.ks.edu.tw service name:ftp
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
lsof -p 12 看进程号为12的进程打开了哪些文件
lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断信号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
lsof -s 列出打开文件的大小,如果没有大小,则留下空白
lsof -u username 以UID,列出打开的文件 www.2cto.com