s11.1 lsof:查看進程打開的文件

功能說明

lsof 全名爲list open files,也就是列舉系統中已經被打開的文件,經過lsof命令,就能夠根據文件找到對應的進程信息,也能夠根據進程信息找到進程打開的文件。

【語法格式】

lsof    [option]
lsof    [選項]
參數選項         解釋說明
-c<進程名>     顯示指定的進程名所打開的文件
-p<進程號>     顯示指定的進程號所打開的文件
-i            經過監聽指定的協議、端-和主機等信息,顯示符合條件的進程信息
-u            顯示指定用戶使用的文件
-U            顯示全部socket文件
 

範例11-1:顯示使用文件的進程。

[root@lewen ~]# lsof /var/log/messages
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
abrt-watc  8718 root    4r   REG  253,0   404668 522404 /var/log/messages
rsyslogd  10046 root    6w   REG  253,0   404668 522404 /var/log/messages
 
若是想知道某個特定的文件是由哪一個進程在使用,就能夠經過「lsof文件名」的方式
來獲得。從上面的輸出能夠得知,/var/log/messages文件是由rsyslogd進程在使用。
輸出中每列的含義具體以下。
-COMMAND:命令,進程的名稱。
-PID:進程號。
-USER:進程的全部者。
-FD:文件描述符,它又包含以下內容。
  0:表示標準輸出。
  1:表示標準輸入。
  2:表示標準錯誤。
  u:表示該文件被打開並處於讀取/寫人模式。
  r:表示該文件被打開並處於只讀模式。
  w:表示該文件被打開並處於寫人模式。
-TYPE:文件類型,REG(regular)爲普通文件。
-DEVICE:指定磁盤的名稱。
-SIZE/OFF:文件的大小。
-NODE:索引節點。
-NAME:文件名稱。

範例11-2:顯示指定進程所打開的文件。

[root@lewen ~]# lsof -c rsyslog
COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF   NODE NAME
rsyslogd 10046 root  cwd       DIR              253,0      224     64 /
rsyslogd 10046 root  rtd       DIR              253,0      224     64 /
rsyslogd 10046 root  txt       REG              253,0   664080 522402 /usr/sbin/rsyslogd
...

範例11-3:顯示指定進程號所打開的文件。

[root@lewen ~]# lsof -p 10046
COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF   NODE NAME
rsyslogd 10046 root  cwd       DIR              253,0      224     64 /
rsyslogd 10046 root  rtd       DIR              253,0      224     64 /
rsyslogd 10046 root  txt       REG              253,0   664080 522402 /usr/sbin/rsyslogd
...

範例11-4:監聽指定的協議、端口和主機等信息,顯示符合條件的進程信息。

在講解範例以前,咱們先來看看相應的語法格式:
lsof -i [46] [protocol][@8hostname][:service|port]
 
其中各項的含義以下。
  • 46:4表明IPv4,6表明IPv6。
  • protocol:傳輸協議,能夠是TCP或UDP。
  • hostname:主機名稱或者IP地址。
  • service:進程的服務名,例如NFS、SSH和FTP等。
  • port:系統中與服務對應的端口號。例如HTTP服務默認對應的端口號爲80,SS日服務默認對應的端口號爲22。瞭解了語法格式以後,再來看看範例的解答。
[root@lewen ~]# lsof -i #<=查看全部進程。
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    10044 root    3u  IPv4  49337      0t0  TCP *:ssh (LISTEN)
sshd    10044 root    4u  IPv6  49346      0t0  TCP *:ssh (LISTEN)
master  10215 root   13u  IPv4  50008      0t0  TCP localhost:smtp (LISTEN)
master  10215 root   14u  IPv6  50009      0t0  TCP localhost:smtp (LISTEN)
sshd    10805 root    3u  IPv4  52326      0t0  TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)
 
 
[root@lewen ~]# lsof -i tcp # <=顯示全部tcp網培鏈接的進程信息
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    10044 root    3u  IPv4  49337      0t0  TCP *:ssh (LISTEN)
sshd    10044 root    4u  IPv6  49346      0t0  TCP *:ssh (LISTEN)
master  10215 root   13u  IPv4  50008      0t0  TCP localhost:smtp (LISTEN)
master  10215 root   14u  IPv6  50009      0t0  TCP localhost:smtp (LISTEN)
sshd    10805 root    3u  IPv4  52326      0t0  TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)
 
 
[root@lewen ~]# lsof -i :22 #<=顯示端口爲22的進程,這條命今很經常使用
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    10044 root    3u  IPv4  49337      0t0  TCP *:ssh (LISTEN)
sshd    10044 root    4u  IPv6  49346      0t0  TCP *:ssh (LISTEN)
sshd    10805 root    3u  IPv4  52326      0t0  TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)
 
 
[root@lewen ~]# lsof -i tcp:22 #<==星示同時知足TCP和端口爲22的進程。
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    10044 root    3u  IPv4  49337      0t0  TCP *:ssh (LISTEN)
sshd    10044 root    4u  IPv6  49346      0t0  TCP *:ssh (LISTEN)
sshd    10805 root    3u  IPv4  52326      0t0  TCP k8s-node1:ssh->10.0.0.1:10662 (ESTABLISHED)

範例11-5:顯示指定用戶使用的文件。

[lewen@k8s-node1 ~]$ lsof -u lewen
COMMAND   PID  USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
bash    11081 lewen  cwd    DIR  253,0        62 33997200 /home/lewen
bash    11081 lewen  rtd    DIR  253,0       224       64 /
bash    11081 lewen  txt    REG  253,0    964608 50333656 /usr/bin/bash
bash    11081 lewen  mem    REG  253,0     61624    34664 /usr/lib64/libnss_files-2.17.so
bash    11081 lewen  mem    REG  253,0 106075056 50334298 /usr/lib/locale/locale-archive
bash    11081 lewen  mem    REG  253,0   2151672    34646 /usr/lib64/libc-2.17.so
bash    11081 lewen  mem    REG  253,0     19288    34652 /usr/lib64/libdl-2.17.so

範例11-6:顯示全部socket文件。

[root@k8s-node1 ~]# lsof -U
COMMAND     PID    USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
systemd       1    root   12u  unix 0xffff964f7656e800      0t0 25117 /run/systemd/private
systemd       1    root   22u  unix 0xffff964f7656fc00      0t0 25169 /run/lvm/lvmpolld.socket
systemd       1    root   23u  unix 0xffff9650714f8400      0t0  8992 /run/systemd/notify
systemd       1    root   24u  unix 0xffff9650714f8000      0t0  8994 /run/systemd/cgroups-agent
相關文章
相關標籤/搜索