获得网络信息
lsof -i
root@hello-test-master:~# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1002 root 3r IPv4 4997647 0t0 TCP 120.199.120.153:ssh->123.158.57.152:15350 (ESTABLISHED)
apache2 1216 www-data 4u IPv6 8861 0t0 TCP *:http (LISTEN)
mysqld 1366 mysql 10u IPv4 101938 0t0 TCP *:mysql (LISTEN)
只显示ipv6
lsof -i 6
只显示tcp
lsof -iTCP
只显示某一端口号
lsof -i :22
root@hello-test-master:~# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1002 root 3r IPv4 4997647 0t0 TCP 120.199.120.153:ssh->123.158.57.152:15350 (ESTABLISHED)
sshd 18614 root 3u IPv4 4076899 0t0 TCP *:ssh (LISTEN)
sshd 18614 root 4u IPv6 4076901 0t0 TCP *:ssh (LISTEN)
sshd 20964 root 3r IPv4 4429946 0t0 TCP 120.199.120.153:ssh->123.58.191.68:20517 (ESTABLISHED)
显示与某个host的连接
lsof -i@172.16.12.5
root@hello-test-master:~# lsof -i@123.158.57.152
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1002 root 3r IPv4 4997647 0t0 TCP 120.199.120.153:ssh->123.158.57.152:15350 (ESTABLISHED)
root@hello-test-master:~#
显示与某个host,port的连接
root@hello-test-master:~# lsof -i@123.158.57.152:15350
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1002 root 3r IPv4 4997647 0t0 TCP 120.199.120.153:ssh->123.158.57.152:15350 (ESTABLISHED)
root@hello-test-master:~#
过滤监听端口
找出那些等待连接的端口
lsof -i -sTCP:LISTEN
root@hello-test-master:~# lsof -i -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1216 www-data 4u IPv6 8861 0t0 TCP *:http (LISTEN)
mysqld 1366 mysql 10u IPv4 101938 0t0 TCP *:mysql (LISTEN)
rpcbind 1686 root 8u IPv4 5073 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1686 root 11u IPv6 5080 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1717 statd 8u IPv4 6145 0t0 TCP *:58319 (LISTEN)
rpc.statd 1717 statd 10u IPv6 6153 0t0 TCP *:36763 (LISTEN)
netserver 1799 root 4u IPv4 6221 0t0 TCP *:12865 (LISTEN)
当然也可以使用 grep LISTEN的方法
lsof -i | grep -i LISTEN
找到已经建立的连接
关键词 ESTABLISHED
lsof -i -sTCP:ESTABLISHED
或者
lsof -i | grep -i ESTABLISHED
用户信息
获得某一个用户的信息,包括他们的网络活动,打开文件信息
例如:
lsof -u root
排除例外规则
lsof -u ^root
结束一个用户的所有活动
kill -9 `lsof -t -u daniel`
命令与进程
查看某一命令在使用哪些文件,连接
lsof -c python
查看某一进程ID
lsof -p 10075
某一个命令的pid是多少
lsof -t -c python
lsof -t -c apache2
文件和目录
查看与某一目录相关的所有活动
lsof /var/log/messages/
root@hello-test-master:~# lsof /var/log/messages/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1991 root 7w REG 254,1 26168 273614 /var/log/messages
nhids-log 2696 root 5r REG 254,1 26168 273614 /var/log/messages
root@hello-test-master:~#
与某一文件相关的所有活动
lsof /home/daniel/firewall_whitelist.txt
高级用法
和tcpdump
相似,也可以加入过滤器
过滤用户与ip
lsof -u daniel -i @1.1.1.1
-t 和 -c 来HUP进程
kill -HUP `lsof -t -c sshd`
就是把lsof
列出的全杀掉
列出 port range里面,打开的连接
lsof -i @fw.google.com:2150=2180
结论
lsof
大法好,退 netstat
和 ps
保平安!