一、 文件正在被哪些程序访问?
root@HostOS:~# lsof |grep /var/log/auth.log|head -1 rsyslogd 1043 syslog 5w REG 252,0 466 662537 /var/log/auth.log root@HostOS:~# ps -ef|grep "1043"|grep -v grep syslog 1043 1 0 2020 ? 00:00:00 /usr/sbin/rsyslogd -n
二、恢复误删文件
假如误删了/var/log/auth.log,一下步骤可以恢复 1. lsof | grep /var/log/auth.log rsyslogd 854 syslog 7w REG 252,0 94294 787421 /var/log/auth.log (deleted) in:imuxso 854 877 syslog 7w REG 252,0 94294 787421 /var/log/auth.log (deleted) in:imklog 854 878 syslog 7w REG 252,0 94294 787421 /var/log/auth.log (deleted) rs:main 854 879 syslog 7w REG 252,0 94294 787421 /var/log/auth.log (deleted) 2. tailf /proc/854/fd/7 3. cat /proc/854/fd/7 > /tmp/auth.log
三、lsof常用命令
1. 列出系统里所有的网络连接 lsof -i 2. 列出test用户打开的文件 lsof -u test 3. 列出sshd程序所访问的文件 lsof -c sshd 4. 列出某个进程所访问的文件 lsof -p PID 5. 递归查看test目录下的文件信息 lsof +D /home/test/ 6. 遍历test目录下所有文件 lsof | grep ‘/home/test’ 7. 列出所有tcp连接 lsof -i tcp 8. 列出所有udp连接 lsof -i udp 9. 列出什么进程在使用端口tcp 22端口 lsof -i tcp:22