lsof

1区端、lsof 簡介

lsof 是 Linux 下的一個非常實用的系統(tǒng)級的監(jiān)控、診斷工具。
它的意思是 List Open Files权旷,很容易你就記住了它是 “l(fā)s + of”的組合~
它可以用來列出被各種進程打開的文件信息,記坠峤Α:linux 下 “一切皆文件”拄氯,
包括但不限于 pipes, sockets, directories, devices, 等等。
因此它浅,使用 lsof译柏,你可以獲取任何被打開文件的各種信息。
只需輸入 lsof 就可以生成大量的信息姐霍,因為 lsof 需要訪問核心內(nèi)存和各種文件鄙麦,所以必須以 root 用戶的身份運行它才能夠充分地發(fā)揮其功能。

lsof 的示例輸出:

root@YLinux:~/lab 0# lsof
COMMAND     PID   TID       USER   FD      TYPE     DEVICE SIZE/OFF       NODE NAME

systemd       1             root  cwd       DIR        8,6     4096          2 /

systemd       1             root  rtd       DIR        8,6     4096          2 /

systemd       1             root  txt       REG        8,6  2273340    1834909 /usr/lib/systemd/systemd

systemd       1             root  mem       REG        8,6   210473    1700647 /lib/libnss_files-2.15.s

2镊折、lsof 常用用法

2.1 監(jiān)控打開的文件胯府、設備
查看文件、設備被哪些進程占用
lsof /dev/tty1
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
3
bash       1770 jian    0u   CHR    4,1      0t0 1045 /dev/tty1
4
bash       1770 jian    1u   CHR    4,1      0t0 1045 /dev/tty1
5
bash       1770 jian    2u   CHR    4,1      0t0 1045 /dev/tty1
6
bash       1770 jian  255u   CHR    4,1      0t0 1045 /dev/tty1
7
startx     1845 jian    0u   CHR    4,1      0t0 1045 /dev/tty1
8
startx     1845 jian    1u   CHR    4,1      0t0 1045 /dev/tty1
9
...

2.2 監(jiān)控文件系統(tǒng)

指定目錄恨胚、掛載點骂因,可以看到有哪些進程打開了其下的文件:
lsof /data/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
3
bash    15983 jian  cwd    DIR    8,5     4096 8252 /data/backup
4
...
這在 umount 某個文件系統(tǒng)失敗時非常有用(通常會報該 FS is busy)。
列出某個目錄(掛載點 如 /home 也行)下被打開的文件:
lsof +D /var/log/
COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
4
rsyslogd  488 syslog   1w   REG    8,1     1151 268940 /var/log/syslog
5
rsyslogd  488 syslog   2w   REG    8,1     2405 269616 /var/log/auth.log
6
console-k 144   root   9w   REG    8,1    10871 269369 /var/log/ConsoleKit/history
列出被指定進程名打開的文件:
lsof -c ssh -c init
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
04
init         1       root  txt    REG        8,1   124704  917562 /sbin/init
05
init         1       root  mem    REG        8,1  1434180 1442625 /lib/i386-linux-gnu/libc-2.13.so
06
init         1       root  mem    REG        8,1    30684 1442694 /lib/i386-linux-gnu/librt-2.13.so
07
...
08
ssh-agent 1528 lakshmanan    1u   CHR        1,3      0t0    4369 /dev/null
09
ssh-agent 1528 lakshmanan    2u   CHR        1,3      0t0    4369 /dev/null
10
ssh-agent 1528 lakshmanan    3u  unix 0xdf70e240      0t0   10464 /tmp/ssh-sUymKXxw1495/agent.1495

2.3 監(jiān)控進程

指定進程號赃泡,可以查看該進程打開的文件:
lsof -p 2064
COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME
03
firefox 2064 jian  cwd    DIR        8,6     4096 1571780 /home/jian
04
firefox 2064 jian  rtd    DIR        8,6     4096       2 /
05
firefox 2064 jian  txt    REG        8,6    44224 1985670 /usr/lib/firefox-12.0/firefox
06
firefox 2064 jian  mem    REG        8,6 14707012  925361 /usr/share/fonts/chinese/msyhbd.ttf
07
firefox 2064 jian  mem    REG        8,6 15067744  925362 /usr/share/fonts/chinese/msyh.ttf
08
firefox 2064 jian  mem    REG        8,6 16791251 1701681 /usr/share/fonts/wenquanyi/wqy-zenhei.ttc
09
firefox 2064 jian  mem    REG       0,16 67108904   10203 /dev/shm/pulse-shm-3021850167
10
...
當你想要殺掉某個用戶所有打開的文件侣签、設備塘装,你可以這樣:
kill -9 lsof -t -u lakshmanan
此處 -t 的作用是單獨的列出 進程 id 這一列。

2.4 監(jiān)控網(wǎng)絡

查看指定端口有哪些進程在使用(lsof -i 列出所有的打開的網(wǎng)絡連接):
lsof -i:22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
3
sshd    1569 root    3u  IPv4  10303      0t0  TCP *:ssh (LISTEN)
4
sshd    1569 root    4u  IPv6  10305      0t0  TCP *:ssh (LISTEN)
列出被某個進程打開所有的網(wǎng)絡文件:
lsof -i -a -p 234或者

lsof -i -a -c ssh
列出所有 tcp影所、udp 連接:
lsof -i tcp;

lsof -i udp;

列出所有 NFS 文件:

lsof -N -u lakshmanan -a
查看指定網(wǎng)口有哪些進程在使用:

lsof -i@192.168.1.91

2
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
3
skype      1909 jian   54u  IPv4   9116      0t0  TCP 192.168.1.91:40640->64.4.23.153:40047 (ESTABLISHED)
4
pidgin     1973 jian    7u  IPv4   6599      0t0  TCP 192.168.1.91:59311->hx-in-f125.1e100.net:https (ESTABLISHED)
5
pidgin     1973 jian   13u  IPv4   9260      0t0  TCP 192.168.1.91:54447->by2msg3010511.phx.gbl:msnp (ESTABLISHED)
6
...

3蹦肴、更多使用技巧

3.1 監(jiān)控用戶

查看指定用戶打開的文件(lsof -u ^lakshmanan 可以排除某用戶):
lsof -u messagebus
2
COMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME
3
dbus-daem 1805 messagebus  cwd    DIR        8,6     4096       2 /
4
dbus-daem 1805 messagebus  rtd    DIR        8,6     4096       2 /
5
dbus-daem 1805 messagebus  txt    REG        8,6  1235361 1834948 /usr/bin/dbus-daemon
6
dbus-daem 1805 messagebus  mem    REG        8,6   210473 1700647 /lib/libnss_files-2.15.so
7
dbus-daem 1805 messagebus  mem    REG        8,6   190145 1700642 /lib/libnss_nis-2.15.so
8
dbus-daem 1805 messagebus  mem    REG        8,6   490366 1700636 /lib/libnsl-2.15.so
9
...

3.2 監(jiān)控應用程序

查看指定程序打開的文件:

lsof -c firefox
2
COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME
3
firefox 2064 jian  cwd    DIR        8,6     4096 1571780 /home/jian
4
firefox 2064 jian  rtd    DIR        8,6     4096       2 /
5
firefox 2064 jian  txt    REG        8,6    44224 1985670 /usr/lib/firefox-12.0/firefox
6
firefox 2064 jian  mem    REG        8,6 14707012  925361 /usr/share/fonts/chinese/msyhbd.ttf
7
firefox 2064 jian  mem    REG        8,6 15067744  925362 /usr/share/fonts/chinese/msyh.ttf
8
firefox 2064 jian  mem    REG        8,6 16791251 1701681 /usr/share/fonts/wenquanyi/wqy-zenhei.ttc
9
...

4、命令模式技巧

4.1 組合邏輯查詢條件

只有多個查詢條件都滿足猴娩, 用 "-a" 參數(shù)阴幌,默認是 -o 。
lsof -a -c bash -u root
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
3
bash    1986 root  cwd    DIR    8,6     4096 1701593 /root/lab
4
bash    1986 root  rtd    DIR    8,6     4096       2 /
5
bash    1986 root  txt    REG    8,6  1994157 1700632 /bin/bash
6
bash    1986 root  mem    REG    8,6  9690800  405214 /usr/lib/locale/locale-archive
7
bash    1986 root  mem    REG    8,6   210473 1700647 /lib/libnss_files-2.15.so

4.2 lsof 命令的重復執(zhí)行模式:

基于給定的參數(shù)延時多少秒重復執(zhí)行 lsof
+r 表示 當沒有文件被打開的時候卷中,repeat mode 將自行結束矛双。
-r 表示 不管文件是否存在或者被打開,它都將執(zhí)行蟆豫,直到你中斷它议忽。
每個循環(huán)的輸出使用 ‘=======’ 做分隔符,你也可以用 ‘-r’ | ‘+r’ 指定延時時間十减。
lsof -u lakshmanan -c init -a -r5
02

03
=======
04
=======
05
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
06
inita.sh 2971 lakshmanan  cwd    DIR    8,1     4096  393218 /home/lakshmanan
07
inita.sh 2971 lakshmanan  rtd    DIR    8,1     4096       2 /
08
inita.sh 2971 lakshmanan  txt    REG    8,1    83848  524315 /bin/dash
09
inita.sh 2971 lakshmanan  mem    REG    8,1  1434180 1442625 /lib/i386-linux-gnu/libc-2.13.so
10
inita.sh 2971 lakshmanan  mem    REG    8,1   117960 1442612 /lib/i386-linux-gnu/ld-2.13.so
11
inita.sh 2971 lakshmanan    0u   CHR  136,4      0t0       7 /dev/pts/4
12
inita.sh 2971 lakshmanan    1u   CHR  136,4      0t0       7 /dev/pts/4
13
inita.sh 2971 lakshmanan    2u   CHR  136,4      0t0       7 /dev/pts/4
14
inita.sh 2971 lakshmanan   10r   REG    8,1       20  393578 /home/lakshmanan/inita.sh
15
=======

以上輸出是前 5 秒沒有輸出栈幸,然后 “inita.sh” 啟動后,開始有了輸出帮辟。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末速址,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子由驹,更是在濱河造成了極大的恐慌芍锚,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔓榄,死亡現(xiàn)場離奇詭異并炮,居然都是意外死亡,警方通過查閱死者的電腦和手機甥郑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門逃魄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壹若,你說我怎么就攤上這事嗅钻。” “怎么了店展?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵养篓,是天一觀的道長。 經(jīng)常有香客問我赂蕴,道長柳弄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮碧注,結果婚禮上嚣伐,老公的妹妹穿的比我還像新娘。我一直安慰自己萍丐,他們只是感情好轩端,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逝变,像睡著了一般基茵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壳影,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天拱层,我揣著相機與錄音,去河邊找鬼宴咧。 笑死根灯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的掺栅。 我是一名探鬼主播烙肺,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柿冲!你這毒婦竟也來了茬高?” 一聲冷哼從身側響起兆旬,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤假抄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丽猬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宿饱,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年脚祟,在試婚紗的時候發(fā)現(xiàn)自己被綠了谬以。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡由桌,死狀恐怖为黎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情行您,我是刑警寧澤铭乾,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站娃循,受9級特大地震影響炕檩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捌斧,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一笛质、第九天 我趴在偏房一處隱蔽的房頂上張望泉沾。 院中可真熱鬧,春花似錦妇押、人聲如沸跷究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揭朝。三九已至,卻和暖如春色冀,著一層夾襖步出監(jiān)牢的瞬間潭袱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工锋恬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屯换,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓与学,卻偏偏與公主長得像彤悔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子索守,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • lsof(list open files)是一個列出當前系統(tǒng)打開文件的工具晕窑。在linux環(huán)境下,任何事物都以文件的...
    jerrik閱讀 373評論 0 1
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,168評論 2 33
  • lsof簡介 lsof(list open files)是一個列出當前系統(tǒng)打開文件的工具卵佛。在linux環(huán)境下杨赤,任何...
    壹人城閱讀 267評論 0 0
  • 如果你想知道你的服務器正在做干什么,你就需要了解一些基本的命令截汪,一旦你精通了這些命令疾牲,那你就是一個專業(yè)的 Linu...
    七寸知架構閱讀 10,857評論 1 71
  • 曾經(jīng)看過這樣一部電視劇 名字叫《歲月》 我的偶像梅婷是主演 男一號是誰演的我都記不清楚了 因為這部片子是一部很老的...
    na樣閱讀 574評論 0 0