其实和fuser类似的,lsof使用的场景通常都是当你试图mount一个文件系统的时候,发现设备繁忙
ibusybox:~ ibusybox$ umount /mnt
umount : /mnt: device is busy
这时候就可以用lsof查看具体是什么进程在访问/mnt
用法lsof mountpoint
ibusybox:~ ibusybox$ lsof /mnt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Dock 121 ibusybox 21r DIR 1,2 612 526637 /mnt
就可以看到具体pid和用户之类的信息
相反如果想查看进程访问了哪些文件,加载了哪些库,或者是socket连接等等,就可以反过来用pid查看
用法ls -p pid
ibusybox:~ ibusybox$ lsof -p 121
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Dock 121 ibusybox 21r DIR 1,2 612 526637 /mnt
另外lsof也支持通过进程名来查看相关信息
用法lsof -c processname
ibusybox:~ ibusybox$ lsof -c Dock
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Dock 121 ibusybox cwd DIR 1,2 1088 2 /
Dock 121 ibusybox txt REG 1,2 3091616 879965 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock
如果你是root 想窥视一下其他兄弟在干啥 也可以通过lsof先看看tty设备访问的情况
ibusybox:~ ibusybox$ lsof /dev/ttys000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 403 ibusybox 0u CHR 16,0 0t326502 623 /dev/ttys000
bash 403 ibusybox 1u CHR 16,0 0t326502 623 /dev/ttys000
bash 403 ibusybox 2u CHR 16,0 0t326502 623 /dev/ttys000
然后再lsof -u username 就可以查看该用户在访问啥就一目了然了
ibusybox:~ ibusybox$ lsof -u ibusybox
Safari 192 ibusybox txt REG 1,2 50204 1673416 /private/var/folders/r9/kfjqnst15tb0ss2hk_4vk8zh0000gp/C/mds/mdsDirectory.db
Safari 192 ibusybox txt REG 1,2 32768 1673264 /private/var/db/mds/messages/se_SecurityMessages
Safari 192 ibusybox txt REG 1,2 2815 773626 /Applications/Safari.app/Contents/Resources/CertSecureStretch.png
通过lsof -i 也可以查看已经占用的socket端口,lsof -i :port可以直接查看某指定端口
ibusybox:~ ibusybox$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
SystemUIS 123 ibusybox 5u IPv4 0x238afe528c39b56d 0t0 UDP *:*
NetworkBr 130 ibusybox 5u IPv4 0x238afe528c39b6f5 0t0 UDP *:*
Safari 206 ibusybox 10u IPv4 0x238afe528e701e75 0t0 UDP *:terabase
ubd 237 ibusybox 17u IPv4 0x238afe52901193e5 0t0 TCP *:23456 (LISTEN)
lsof是一个复杂而非常灵活的工具,可以man一下了解一下更多的细节
本文链接:https://www.yunweipai.com/808.html
这文章百度已经收录了,才十几分钟。。。
showuseragent插件还不错哦,连用安卓手机登录访问的都能识别出来。
看来baidu真的是牛b极了 3sb大战看来只能够比谁的蜘蛛爬得快了
/usr/sbin/lsof -u crazybaby | grep cwd
对cwd进行grep下 就可以看到他一举一动了 如果可以监视对方打开的文件就更ok了.
额 刚才邪恶了下 写了个脚本 把对方正在编辑的代码也能显示出来了….
155 ~/oneTest >>./a.out
crazybaby OpenDirs:
………………………………..
//…..略
lsof 15135 crazybaby cwd DIR 253,0 4096 238878990 /home/crazybaby/uTest/oneTest
crazybaby OpenFiles:
………………………………..
504 15135 6994 0 11:36 pts/15 00:00:01 vim hello.c
借用lsof命令可以搞成这样.
老兄能把脚本写成a.out 都应该属于绝技了 哈
老大,把我的恢复回复删了吧。Orz
多谢踊跃发言