下面的一些其它东西需要牢记:
默认 : 没有选项,lsof列出活跃进程的所有打开文件 -a 表示两个参数都必须满足时才显示结果 -c 查看指定的命令
-g gid 显示归属gid的进程情况
-i 显示所有连接 -t 仅获取进程ID -u 显示指定用户打开的文件 -p 查看指定进程ID已打开的文件
+d /DIR/ 显示目录下被进程打开的文件 +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 -d FD 显示指定文件描述符的进程
-U 获取UNIX套接口地址
-F 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止)
-N 列出所有UNIX域Socket文件
-r,lsof会永远不断的执行,直到收到中断信号 查看目前ftp连接的情况,每隔3秒不断执行:lsof -i tcp@192.168.106.128:ftp -r 3
+r,lsof会一直执行,直到没有档案被显示
usage: [-?abhlnNoOPRstUvV] [+|-c c] [+|-d s] [+D D] [+|-f[cgG]] [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+|-M] [-o [o]] [-p s] [+|-r [t]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
使用-i显示所有连接
# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
smbd 627 root 32u IPv6 10612 0t0 TCP *:microsoft-ds (LISTEN)
smbd 627 root 33u IPv6 10613 0t0 TCP *:netbios-ssn (LISTEN)
使用-i 6仅获取IPv6流量
# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
smbd 627 root 32u IPv6 10612 0t0 TCP *:microsoft-ds (LISTEN)
smbd 627 root 33u IPv6 10613 0t0 TCP *:netbios-ssn (LISTEN)
仅显示TCP连接(同理可获得UDP连接)
你也可以通过在-i后提供对应的协议来仅仅显示TCP或者UDP连接信息。
# lsof -iTCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
smbd 627 root 32u IPv6 10612 0t0 TCP *:microsoft-ds (LISTEN)
smbd 627 root 33u IPv6 10613 0t0 TCP *:netbios-ssn (LISTEN)
使用-i:port来显示与指定端口相关的网络信息
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1147 root 3u IPv4 1872 0t0 TCP *:ssh (LISTEN) sshd 1147 root 4u IPv6 1874 0t0 TCP *:ssh (LISTEN)
使用@host来显示指定到指定主机的连接
使用@host:port显示基于主机与端口的连接
lsof -i@10.102.162.29:22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 6536 root 3u IPv4 105348538 0t0 TCP 10.102.162.29:ssh->122.71.226.220:62360 (ESTABLISHED) sshd 6831 root 3u IPv4 105352787 0t0 TCP 10.102.162.29:ssh->112.27.195.20:61540 (ESTABLISHED)
找出监听端口
找出正等候连接的端口
# lsof -i -sTCP:LISTEN
# lsof -i | grep -i LISTEN
找出监听端口
# lsof -i -sTCP:ESTABLISHED
# lsof -i | grep -i ESTABLISHED
用户信息
你也可以获取各种用户的信息,以及它们在系统上正干着的事情,包括它们的网络活动、对文件的操作等。
使用-u显示指定用户打开了什么
# lsof -u root Dock 155 daniel txt REG 14,2 2798436 823208 /usr/lib/libicucore.A.dylib Dock 155 daniel txt REG 14,2 1580212 823126 /usr/lib/libobjc.A.dylib
使用-u user来显示除指定用户以外的其它所有用户所做的事情
# lsof -u ^root
杀死指定用户所做的一切事情
# kill -9 `lsof-t -u dabing`
命令和进程
使用-c查看指定的命令正在使用的文件和网络连接
lsof -c python
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 2137 root cwd DIR 253,1 4096 1575955 /root/apwd/Synchronous python 2137 root rtd DIR 253,1 4096 2 /
使用-p查看指定进程ID已打开的内容
lsof -p 2137
-t选项只返回PID
lsof -t -c python
文件和目录
通过查看指定文件或目录,你可以看到系统上所有正与其交互的资源——包括用户、进程等。
显示与指定目录交互的所有一切
lsof /home/synchronous_model/server_new/
显示与指定文件交互的所有一切
lsof /home/synchronous_model/server_new/server_new.py
递归查找某个目录中所有打开的文件
# lsof +D /usr/lib
加上+D参数,lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢:
# lsof | grep ‘/usr/lib’
之所以慢是因为+D首先查找所有的文件,然后一次性输出。
netstat
1.功能与说明
netstat 用于显示linux中各种网络相关信息。如网络链接 路由表 接口状态链接 多播成员等等。
2.参数含义介绍
-a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
3.常用实例
3.1 列出所有端口 netstat -a 3.2 列出所有tcp端口 netstat -at 3.3 列出所有udp端口 netstat -au 3.4 只显示监听端口 netstat -l 3.5 只显示监听的tcp端口 netstat -lt 3.6 只显示所有监听udp端口 netstat -lu 3.7 只列出所有监听unix端口 netstat -lx 3.8 显示所有端口的统计信息 netstat -s 3.9 显示所有tcp(netstat -st)或udp(netstat -su)的统计信息 3.10 显示pid/进程名称 netstat -p -p可以与其他参数一起使用 比如显示tcp的进程id信息,netstat -pt 3.11 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)当你不想让主机,端口和用户名显示,使用 netstat -n。
将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。netstat -ntpl 显示tcp的监听端口,不显示主机端口用户名 用数字代替 netstat -ptnl 3.12 一秒钟输出一次tcp监听端口信息 netstat -ntplc 3.13 显示路由信息 netstat -r 3.14 显示网络接口列表 netstat -i