Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


Linux 命令神器:lsof 入门

2014-10-27 16:01    评论: 17 收藏: 12 分享: 16    

用户信息

你也可以获取各种用户的信息,以及它们在系统上正干着的事情,包括它们的网络活动、对文件的操作等。

使用-u显示指定用户打开了什么

# lsof -u daniel

-- snipped --
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
Dock 155 daniel  txt REG   14,2   2934184   823498 /usr/lib/libstdc++.6.0.4.dylib
Dock 155 daniel  txt REG   14,2    132008   823505 /usr/lib/libgcc_s.1.dylib
Dock 155 daniel  txt REG   14,2    212160   823214 /usr/lib/libauto.dylib
-- snipped --

使用-u user来显示除指定用户以外的其它所有用户所做的事情

# lsof -u ^daniel

-- snipped --
Dock 155 jim  txt REG   14,2   2798436   823208 /usr/lib/libicucore.A.dylib
Dock 155 jim  txt REG   14,2   1580212   823126 /usr/lib/libobjc.A.dylib
Dock 155 jim  txt REG   14,2   2934184   823498 /usr/lib/libstdc++.6.0.4.dylib
Dock 155 jim  txt REG   14,2    132008   823505 /usr/lib/libgcc_s.1.dylib
Dock 155 jim  txt REG   14,2    212160   823214 /usr/lib/libauto.dylib
-- snipped --

杀死指定用户所做的一切事情

可以消灭指定用户运行的所有东西,这真不错。

# kill -9 `lsof -t -u daniel`

命令和进程

可以查看指定程序或进程由什么启动,这通常会很有用,而你可以使用lsof通过名称或进程ID过滤来完成这个任务。下面列出了一些选项:

使用-c查看指定的命令正在使用的文件和网络连接

# lsof -c syslog-ng

COMMAND    PID USER   FD   TYPE     DEVICE    SIZE       NODE NAME
syslog-ng 7547 root  cwd    DIR    3,3    4096   2 /
syslog-ng 7547 root  rtd    DIR    3,3    4096   2 /
syslog-ng 7547 root  txt    REG    3,3  113524  1064970 /usr/sbin/syslog-ng
-- snipped --

使用-p查看指定进程ID已打开的内容

# lsof -p 10075

-- snipped --
sshd    10068 root  mem    REG    3,3   34808 850407 /lib/libnss_files-2.4.so
sshd    10068 root  mem    REG    3,3   34924 850409 /lib/libnss_nis-2.4.so
sshd    10068 root  mem    REG    3,3   26596 850405 /lib/libnss_compat-2.4.so
sshd    10068 root  mem    REG    3,3  200152 509940 /usr/lib/libssl.so.0.9.7
sshd    10068 root  mem    REG    3,3   46216 510014 /usr/lib/liblber-2.3
sshd    10068 root  mem    REG    3,3   59868 850413 /lib/libresolv-2.4.so
sshd    10068 root  mem    REG    3,3 1197180 850396 /lib/libc-2.4.so
sshd    10068 root  mem    REG    3,3   22168 850398 /lib/libcrypt-2.4.so
sshd    10068 root  mem    REG    3,3   72784 850404 /lib/libnsl-2.4.so
sshd    10068 root  mem    REG    3,3   70632 850417 /lib/libz.so.1.2.3
sshd    10068 root  mem    REG    3,3    9992 850416 /lib/libutil-2.4.so
-- snipped --

-t选项只返回PID

# lsof -t -c Mail

350

文件和目录

通过查看指定文件或目录,你可以看到系统上所有正与其交互的资源——包括用户、进程等。

显示与指定目录交互的所有一切

# lsof /var/log/messages/

COMMAND    PID USER   FD   TYPE DEVICE   SIZE   NODE NAME
syslog-ng 7547 root    4w   REG    3,3 217309 834024 /var/log/messages

显示与指定文件交互的所有一切

# lsof /home/daniel/firewall_whitelist.txt

高级用法

tcpdump类似,当你开始组合查询时,它就显示了它强大的功能。

显示daniel连接到1.1.1.1所做的一切

# lsof -u daniel -i @1.1.1.1

bkdr   1893 daniel 3u  IPv6 3456 TCP 10.10.1.10:1234->1.1.1.1:31337 (ESTABLISHED)

同时使用-t和-c选项以给进程发送 HUP 信号

# kill -HUP `lsof -t -c sshd`

lsof +L1显示所有打开的链接数小于1的文件

这通常(当不总是)表示某个攻击者正尝试通过删除文件入口来隐藏文件内容。

# lsof +L1

(hopefully nothing)

显示某个端口范围的打开的连接

# lsof -i @fw.google.com:2150=2180

结尾

本入门教程只是管窥了lsof功能的一斑,要查看完整参考,运行man lsof命令或查看在线版本。希望本文对你有所助益,也随时欢迎你的评论和指正

资源

本文由 Daniel Miessler撰写,首次在他博客上贴出


via: http://linuxaria.com/howto/linux-terminal-an-lsof-primer

作者:Daniel Miessler 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

12
查看其它分页:

发表评论


最新评论

我也要发表评论

来自北京的 Chrome 49.0|Windows 7 用户 2016-7-19 10:29
爱的色放
回复
来自北京的 Maxthon 4.9|Windows 7 用户 2016-6-3 16:50
赞,技术牛人
2 回复
来自四川成都的 Chrome 31.0|Windows 7 用户 2016-4-6 11:32
bucuo
回复
以谁为师 [Chrome 42.0|Windows 10] 2015-12-8 15:05
呵呵
回复
来自 - 广东深圳 的 Firefox/Windows 用户 2014-11-1 16:12
lsof -i -sTCP:ESTABLISHED
能用吗?
1 回复
ytf606 2014-10-27 22:03  新浪微博网友评论
@我的印象笔记
回复
纠结的矛盾体纠结ing 2014-10-27 22:03  新浪微博网友评论
//@西瓜大丸子汤:这个真的好有用
回复
skyuline 2014-10-27 20:03  新浪微博网友评论
@我的印象笔记
回复
skyuline 2014-10-27 20:03  新浪微博网友评论
mark
回复
耸肩的阿特拉斯阁下 2014-10-27 19:03  新浪微博网友评论
确实是神器
回复
论极语易 2014-10-27 17:03  新浪微博网友评论
@我的印象笔记
1 回复
Aammo 2014-10-27 17:03  新浪微博网友评论
强大//@西瓜大丸子汤: 这个真的好有用
回复
Ted-1993 2014-10-27 17:03  新浪微博网友评论
@有道云笔记收藏
回复
翟启亮 2014-10-27 16:33  新浪微博网友评论
@我的印象笔记
1 回复
百里云_bly 2014-10-27 16:33  新浪微博网友评论
最近刚遇到一个问题,就是用这个命令解决的~//@西瓜大丸子汤: 这个真的好有用
回复
西瓜大丸子汤 2014-10-27 16:33  新浪微博网友评论
这个真的好有用
回复
opensource_电教 2014-10-27 16:33  新浪微博网友评论
@mywiz
回复

热点评论

来自北京的 Maxthon 4.9|Windows 7 用户 2016-6-3 16:50
赞,技术牛人
2
翟启亮 2014-10-27 16:33
@我的印象笔记
1
论极语易 2014-10-27 17:03
@我的印象笔记
1
来自 - 广东深圳 的 Firefox/Windows 用户 2014-11-1 16:12
lsof -i -sTCP:ESTABLISHED
能用吗?
1
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。