lsof命令简要解析

lsof 命令


特别注意
  • 同时使用多个选项时, 默认行为是对结果进行**“逻辑或”运算**
  • 使用选项-a则为逻辑与

=

1 默认行为

没有选项,则列出活跃进程的所有打开文件

=

2 查看所有网络连接
[root@jacklee ~]# lsof -i
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
ntpd        590  ntp   16u  IPv4    18521      0t0  UDP VM-4-5-centos:ntp 
ntpd        590  ntp   17u  IPv6    18522      0t0  UDP VM-4-5-centos:ntp 
ntpd        590  ntp   19u  IPv4    25052      0t0  UDP jacklee.cc:ntp 
ntpd        590  ntp   20u  IPv6    25053      0t0  UDP jacklee.cc:ntp 
dhclient    973 root    6u  IPv4    20054      0t0  UDP *:bootpc 
sshd       1183 root    3u  IPv4    24358      0t0  TCP *:ssh (LISTEN)
master     1315 root   13u  IPv4    24780      0t0  TCP VM-4-5-centos:smtp (LISTEN)
master     1315 root   14u  IPv6    24781      0t0  TCP VM-4-5-centos:smtp (LISTEN)
openresty  9447 root    6u  IPv4  1893732      0t0  TCP *:9527 (LISTEN)
docker-pr  9645 root    4u  IPv6    73370      0t0  TCP *:http (LISTEN)
sshd      10249 root    3u  IPv4 73396364      0t0  TCP jacklee.cc:ssh->114.86.235.244:10747 (ESTABLISHED)
tat_agent 12959 root   17u  IPv4 45248255      0t0  TCP jacklee.cc:50400->169.254.0.138:d-s-n (ESTABLISHED)
YDService 18879 root    9u  IPv4  8672424      0t0  TCP jacklee.cc:54494->169.254.0.55:lsi-bobcat (ESTABLISHED)
openresty 20135 root    6u  IPv4  1893732      0t0  TCP *:9527 (LISTEN)
barad_age 29677 root   12u  IPv4 74345158      0t0  TCP jacklee.cc:35870->169.254.0.4:http (ESTABLISHED)
docker-pr 30205 root    4u  IPv6 20816493      0t0  TCP *:mysql (LISTEN)

=

3 选项
# -a 结果进行“与”运算
# -i 查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况lsof -i 6lsof -itcplsof -i:22lsof -i@172.16.12.5lsof -i@172.16.12.5:22lsof -i -sTCP:LISTENlsof -i -sTCP:ESTABLISHED# -l 输出内容显示用户ID而不是用户名
# -n 显示IP 而不是主机名
# -p 查看指定进程pid已打开的内容
# -P 以数字方式显示端口
# -r 命令持续执行,直到收到中断信号
# +r 命令持续执行,直到没有输出内容
# -s 列出所有打开文件的大小,如果没有大小,则留下空白
# -t 仅返回 pid
# -u 指定 user

=

4 高频用法
# 显示与指定文件交互的所有一切
lsof  /path/firewall_whitelist.txt# 22端口现在运行什么程序
lsof -i:22# 看 pid=12 的进程打开了哪些文件
lsof -p 12 # 显示目录下被进程开启的文件
lsof +d /usr/local/
lsof +D /usr/local/		# 递归搜索# 查看指定命令打开的所有文件(以ping为例)
lsof -p `pidof ping`# 消灭指定用户运行的所有东西
kill -9  `lsof -t -u jack`

=

5 高级操作
# 显示daniel连接到1.1.1.1所做的一切
lsof  -u daniel -i @1.1.1.1# 显示所有打开的链接数小于1的文件
lsof +L1# 显示某个【端口范围】的打开的连接
lsof  -i @fw.google.com:2150=2180

==

6 磁盘空间无法释放的问题

某文件正在被进程占用时,直接删除会导致系统无法释放这部分磁盘空间

# 说明:-n 选项,显示IP而不是主机名(能提高命令的执行速度)lsof -n |& grep -v "UID" | grep deleted  >> deleted.logPORTS="awk '{print $2}' deleted.log | sort | uniq -c | sort -nr | grep -v "delete" |grep -v "tmp" | awk '{print $2}'" && echo $PORTSfor i in $PORTS ; do pidof $i ; donekill -9 $PORTS

==

wan


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部