您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Linux中的lsof命令怎么用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
lsof 命令是 Linux 系統(tǒng)的擴(kuò)展工具,它的含義是 list opened filedesciptor (列出已經(jīng)打開的文件描述符),在 Linux 系統(tǒng)中,所有的與資源句柄相關(guān)的東西都可以統(tǒng)一抽象成文件描述符(filedescriptor,簡稱 fd)。一個(gè)文件句柄是一個(gè) fd,一個(gè) socket 對(duì)象也可以稱之為 fd 等等。
默認(rèn)情況下,系統(tǒng)是不存在這個(gè)命令的,你需要安裝一下,使用如下命令安裝:
yum install lsof
我們來看一下這個(gè)命令的使用效果:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsystemd 1 root cwd DIR 202,1 4096 2 /nscd 453 469 nscd 8u netlink 0t0 11017 ROUTEnscd 453 470 nscd cwd DIR 202,1 4096 2 /nscd 453 470 nscd rtd DIR 202,1 4096 2 /nscd 453 470 nscd txt REG 202,1 180272 146455 /usr/sbin/nscdnscd 453 470 nscd mem REG 202,1 217032 401548 /var/db/nscd/hostsnscd 453 470 nscd mem REG 202,1 90664 132818 /usr/lib64/libz.so.1.2.7nscd 453 470 nscd mem REG 202,1 68192 133155 /usr/lib64/libbz2.so.1.0.6nscd 453 470 nscd mem REG 202,1 153192 133002 /usr/lib64/liblzma.so.5.0.99nscd 453 470 nscd mem REG 202,1 91496 133088 nscd 453 471 nscd 5u a_inode 0,9 0 4796 [eventpoll]nscd 453 471 nscd 6r REG 202,1 217032 401548 /var/db/nscd/hostsnscd 453 471 nscd 7u unix 0xffff880037497440 0t0 11015 /var/run/nscd/socketnscd 453 471 nscd 8u netlink 0t0 11017 ROUTEimgserver 611 zhangyl cwd DIR 202,1 4096 1059054 /home/zhangyl/flamingoserverimgserver 611 zhangyl rtd DIR 202,1 4096 2 /imgserver 611 zhangyl txt REG 202,1 4788917 1057044 /home/zhangyl/flamingoserver/imgserverimgserver 611 zhangyl 24u a_inode 0,9 0 4796 [eventfd]imgserver 611 zhangyl 25u IPv4 55707643 0t0 TCP *:commtact-http (LISTEN)imgserver 611 zhangyl 26r CHR 1,3 0t0 4800 /dev/nullimgserver 611 613 zhangyl 32w REG 202,1 131072 2754609 /home/zhangyl/flamingoserver/imgcache/258bfb8945288a117d98d440986d7a03
結(jié)果顯示中列出了各個(gè)進(jìn)程打開的各種 fd 類型,對(duì)于 Uinx Socket,lsof 命令會(huì)顯示出其詳細(xì)的路徑,打開的文件 fd 亦是如此。
使用 lsof 命令有三點(diǎn)需要注意:
默認(rèn)情況下,lsof 的輸出比較多,我們可以使用 grep 命令過濾我們想要查看的進(jìn)程打開的 fd 信息,如:
lsof -i | grep myapp
或者使用 lsof -p pid 也能過濾出指定的進(jìn)程打開的 fd 信息:
[root@iZ238vnojlyZ ~]# lsof -p 26621COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEchatserve 26621 zhangyl cwd DIR 202,1 4096 1059054 /home/zhangyl/flamingoserverchatserve 26621 zhangyl rtd DIR 202,1 4096 2 /chatserve 26621 zhangyl txt REG 202,1 8027035 1051942 /home/zhangyl/flamingoserver/chatserverchatserve 26621 zhangyl mem REG 202,1 61928 141417 /usr/lib64/libnss_files-2.17.sochatserve 26621 zhangyl mem REG 202,1 44096 143235 /usr/lib64/librt-2.17.sochatserve 26621 zhangyl mem REG 202,1 19520 137064 /usr/lib64/libdl-2.17.sochatserve 26621 zhangyl mem REG 202,1 2112384 132824 /usr/lib64/libc-2.17.sochatserve 26621 zhangyl mem REG 202,1 142304 132850 /usr/lib64/libpthread-2.17.sochatserve 26621 zhangyl mem REG 202,1 88720 135291 /usr/lib64/libgcc_s-4.8.5-20150702.so.1chatserve 26621 zhangyl mem REG 202,1 1141560 137077 /usr/lib64/libm-2.17.sochatserve 26621 zhangyl mem REG 202,1 999944 140059 /usr/lib64/libstdc++.so.6.0.19chatserve 26621 zhangyl mem REG 202,1 9879756 269001 /usr/lib64/mysql/libmysqlclient.so.20.3.4chatserve 26621 zhangyl mem REG 202,1 164440 133622 /usr/lib64/ld-2.17.sochatserve 26621 zhangyl 0u CHR 1,3 0t0 4800 /dev/nullchatserve 26621 zhangyl 1u CHR 1,3 0t0 4800 /dev/nullchatserve 26621 zhangyl 2u CHR 1,3 0t0 4800 /dev/nullchatserve 26621 zhangyl 3u a_inode 0,9 0 4796 [eventpoll]chatserve 26621 zhangyl 4u a_inode 0,9 0 4796 [timerfd]chatserve 26621 zhangyl 5u a_inode 0,9 0 4796 [eventfd]chatserve 26621 zhangyl 7u a_inode 0,9 0 4796 [eventpoll]
lsof 命令只能查看到當(dāng)前用戶有權(quán)限查看到的進(jìn)程 fd 信息,對(duì)于其沒有權(quán)限的進(jìn)程,最右邊一列會(huì)顯示 “Permission denied”。如下所示:
sshd 26759 root cwd unknown /proc/26759/cwd (readlink: Permission denied)sshd 26759 root rtd unknown /proc/26759/root (readlink: Permission denied)sshd 26759 root txt unknown /proc/26759/exe (readlink: Permission denied)sshd 26759 root NOFD /proc/26759/fd (opendir: Permission denied)bash 26761 root cwd unknown /proc/26761/cwd (readlink: Permission denied)bash 26761 root rtd unknown /proc/26761/root (readlink: Permission denied)bash 26761 root txt unknown /proc/26761/exe (readlink: Permission denied)bash 26761 root NOFD /proc/26761/fd (opendir: Permission denied)
lsof 命令第一欄進(jìn)程名在顯示的時(shí)候,默認(rèn)顯示前 n 個(gè)字符,這樣如果我們需要顯示完整的進(jìn)程名以方便過濾的話,可以使用 +c 選項(xiàng)。用法如下:
#最左側(cè)的程序名最大顯示 15 個(gè)字符[zhangyl@iZ238vnojlyZ ~]$ lsof +c 15
當(dāng)然,如果你設(shè)置值太大, lsof 便不會(huì)采用你設(shè)置的最大值,而是使用默認(rèn)最大值。
上文也介紹了,socket 也是一種 fd,如果需要僅顯示系統(tǒng)的網(wǎng)絡(luò)連接信息,使用的是 -i 選項(xiàng)即可,這個(gè)選項(xiàng)可以形象地顯示出系統(tǒng)當(dāng)前的出入連接情況:
看到圖中的連接方向了吧?
當(dāng)然,和 netstat 命令一樣,lsof -i 默認(rèn)也會(huì)顯示 ip 地址和端口號(hào)的別名,我們只要使用 -n 和 -P 選項(xiàng)就能相對(duì)應(yīng)地顯示 ip 地址和端口號(hào)了,綜合起來就是 lsof -Pni:
Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。
上述就是小編為大家分享的Linux中的lsof命令怎么用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。