成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux下 Lsof 命令詳解

系統(tǒng) Linux
在Linux中,一切皆文件,lsof命令可以查看所有已經(jīng)打開了的文件,比如: 普通文件,目錄,特殊的塊文件,管道,socket套接字,設(shè)備,Unix域套接字等等,同時(shí),它還可以結(jié)合 grep 以及 ps 命令進(jìn)行更多的高級(jí)搜索

[[375770]]

本文轉(zhuǎn)載自微信公眾號(hào)「Linux開發(fā)那些事兒」,作者LinuxThings 。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux開發(fā)那些事兒公眾號(hào)。  

lsof 是 List Open File 的縮寫, 它主要用來(lái)獲取被進(jìn)程打開文件的信息,我們都知道,在Linux中,一切皆文件,lsof命令可以查看所有已經(jīng)打開了的文件,比如: 普通文件,目錄,特殊的塊文件,管道,socket套接字,設(shè)備,Unix域套接字等等,同時(shí),它還可以結(jié)合 grep 以及 ps 命令進(jìn)行更多的高級(jí)搜索

安裝

lsof 命令默認(rèn)是沒有安裝的,而且它的使用需要有root權(quán)限或者賦予普通用于sudo權(quán)限, 使用以下命令安裝

  1. yum install -y lsof 

lsof 命令有很多可選參數(shù),本文根據(jù)我自己的使用經(jīng)驗(yàn)整理了一些比較常用且重要的用法

列出所有打開的文件

不帶任何參數(shù)執(zhí)行 lsof 命令會(huì)輸出當(dāng)前所有活躍進(jìn)程打開的所有文件

  1. [root@ecs-centos-7 ~]# lsof | more 
  2. COMMAND     PID   TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME 
  3. systemd       1          root  cwd       DIR              253,1      4096          2 / 
  4. systemd       1          root  rtd       DIR              253,1      4096          2 / 
  5. systemd       1          root  txt       REG              253,1   1624520     530313 /usr/lib/systemd/systemd 
  6. systemd       1          root  mem       REG              253,1     20064     528340 /usr/lib64/libuuid.so.1.3.0 
  7. systemd       1          root  mem       REG              253,1    265600     532853 /usr/lib64/libblkid.so.1.1.0 
  8. systemd       1          root  mem       REG              253,1     90248     525942 /usr/lib64/libz.so.1.2.7 
  9. systemd       1          root  mem       REG              253,1    157424     525955 /usr/lib64/liblzma.so.5.2.2 
  10. systemd       1          root  mem       REG              253,1     23968     526159 /usr/lib64/libcap-ng.so.0.0.0 
  11. systemd       1          root  mem       REG              253,1     19896     526135 /usr/lib64/libattr.so.1.1.0 
  12. systemd       1          root  mem       REG              253,1     19288     525996 /usr/lib64/libdl-2.17.so 
  13. systemd       1          root  mem       REG              253,1    402384     525931 /usr/lib64/libpcre.so.1.2.0 
  14. systemd       1          root  mem       REG              253,1   2156160      

由于lsof命令會(huì)輸出很多信息,所以上面例子中使用了 lsof | more 來(lái)分頁(yè)顯示命令輸出結(jié)果

輸出結(jié)果中,第一列中 systemd 的進(jìn)程ID是 1,它是一個(gè)守護(hù)進(jìn)程

其中列 COMMAND 、PID、USER 分別表示進(jìn)程名、進(jìn)程ID、所屬用戶

列 FD 是文件描述符,下面是可能的類型以及說(shuō)明

FD 說(shuō)明
cwd 當(dāng)前目錄
txt txt文件
rtd root目錄
mem 內(nèi)存映射文件

列 TYPE 是文件類型,下面是可能的值以及說(shuō)明

TYPE 說(shuō)明
DIR 目錄
REG 普通文件
CHR 字符
a_inode Inode文件
FIFO 管道或者socket文件
netlink 網(wǎng)絡(luò)
unknown 未知

列 DEVICE 表示設(shè)備ID

列 SIZE/OFF 表示進(jìn)程大小

列 NODE 表示文件的Inode號(hào)

列NAME 表示路徑或者鏈接

列出指定用戶已打開的文件

使用 -u 選項(xiàng)可以列出指定用戶已經(jīng)打開的文件,該選項(xiàng)后面可以接多個(gè)用戶名,每個(gè)用戶名之間用空格隔開,表示列出所有指定用戶已打開的所有文件

  1. TYPE    說(shuō)明 
  2. DIR 目錄 
  3. REG 普通文件 
  4. CHR 字符 
  5. a_inode Inode文件 
  6. FIFO    管道或者socket文件 
  7. netlink 網(wǎng)絡(luò) 
  8. unknown 未知 

上面的例子中,lsof -u tt 命令表示列出 tt 用戶已經(jīng)打開了的文件,從結(jié)果可以看出,用戶打開了 /home/tt、/、/usr/bin/bash、/usr/bin/vim、/home/tt/.p.txt.swp 這幾個(gè)文件

如果要排除指定用戶已經(jīng)打開的文件,可以在用戶名前加 ^ 符號(hào),下面的命令會(huì)列出除tt用戶外其他所有用戶已打開了的文件

  1. lsof -u ^tt | more 

找出打開著但已被刪除了的文件

有這樣一種場(chǎng)景,有一個(gè)服務(wù)正在往日志文件中寫日志,這個(gè)時(shí)候,不小心把正在寫入的日志文件刪除了

上面的場(chǎng)景中,日志文件雖然被刪除了,但是文件仍然是打開著的,它仍然占用文件系統(tǒng)的空間,我們可以結(jié)合 grep 命令找出這種打開著,但是已經(jīng)被刪除的文件

  1. [root@ecs-centos-7 ~]# lsof -u tt | grep deleted 
  2. vim     27813   tt    4u   REG  253,1    12288 131167 /home/tt/.p.txt.swp(deleted) 

上面例子中使用 lsof -u tt | grep deleted 命令查看用戶 tt打開著的確被刪除的文件

從結(jié)果可以看出,在往 p.txt寫入內(nèi)容的時(shí)候,文件被刪除了

列出所有打開了的網(wǎng)絡(luò)文件

  1. [root@ecs-centos-7 ~]# lsof -i 
  2. COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
  3. ntpd       567   ntp   18u  IPv4  12657      0t0  UDP localhost:ntp 
  4. ntpd       567   ntp   22u  IPv6  16095      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  
  5. dhclient   651  root    6u  IPv4  14594      0t0  UDP *:bootpc  
  6. master     960  root   13u  IPv4  15791      0t0  TCP localhost:smtp (LISTEN) 
  7. master     960  root   14u  IPv6  15792      0t0  TCP localhost:smtp (LISTEN) 
  8. mysqld    1053 mysql   13u  IPv6  15147      0t0  TCP *:mysql (LISTEN) 
  9. sshd      1348  root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN) 
  • 列出所有 IPV4/6 網(wǎng)絡(luò)文件

列出所有已經(jīng)打開了的 ipv4 網(wǎng)絡(luò)文件

  1. [root@ecs-centos-7 ~]# lsof -i 4 
  2. COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
  3. ntpd       567  ntp   16u  IPv4  12651      0t0  UDP *:ntp  
  4. ntpd       567  ntp   18u  IPv4  12657      0t0  UDP localhost:ntp  
  5. ntpd       567  ntp   21u  IPv4  16094      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  
  6. dhclient   651 root    6u  IPv4  14594      0t0  UDP *:bootpc  
  7. master     960 root   13u  IPv4  15791      0t0  TCP localhost:smtp (LISTEN) 
  8. sshd      1348 root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN) 

所有已經(jīng)打開了的 ipv6 網(wǎng)絡(luò)文件

  1. [root@ecs-centos-7 ~]# lsof -i 6 
  2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
  3. ntpd     567   ntp   17u  IPv6  12652      0t0  UDP *:ntp  
  4. ntpd     567   ntp   19u  IPv6  12658      0t0  UDP localhost:ntp  
  5. ntpd     567   ntp   22u  IPv6  16095      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  
  6. master   960  root   14u  IPv6  15792      0t0  TCP localhost:smtp (LISTEN) 
  7. mysqld  1053 mysql   13u  IPv6  15147      0t0  TCP *:mysql (LISTEN) 
  8. sshd    1348  root    4u  IPv6  16700      0t0  TCP *:ssh (LISTEN) 
  • 列出在指定端口上打開的文件

使用 lsof -i:端口號(hào) 可以獲得所有在指定端口號(hào)上打開的文件

  1. [root@ecs-centos-7 ~]# lsof -i:22 
  2. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
  3. sshd     1348 root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN) 
  4. sshd     1348 root    4u  IPv6  16700      0t0  TCP *:ssh (LISTEN) 
  5. sshd    27741 root    3u  IPv4 458958      0t0  TCP ecs-centos-7.4-64bit-20200212:ssh->113.118.121.220:42395 (ESTABLISHED) 
  6. sshd    27819 root    3u  IPv4 459250      0t0  TCP ecs-centos-7.4-64bit-20200212:ssh->113.118.121.220:19807 (ESTABLISHED) 
  7. sshd    27895 root    3u  IPv4 459828      0t0  TCP 

上面例子列出了所有在22號(hào)端口上打開的文件

在服務(wù)器開發(fā)中,經(jīng)常會(huì)部署一個(gè)網(wǎng)關(guān)或者代理程序,用來(lái)和客戶端通訊,網(wǎng)關(guān)或者代理程序需要開放一個(gè)固定的端口供客戶端連接用

如果客戶端連接不上網(wǎng)關(guān)或者代理程序,我們可以用上述命令檢查網(wǎng)關(guān)或代理程序的端口是否開啟,來(lái)排除因?yàn)槎丝陉P(guān)閉了導(dǎo)致連接不上網(wǎng)關(guān)的情況

  • 列出使用了指定協(xié)議(TCP/UDP) 的文件

使用 lsof -i TCP/UDP 列出使用了TCP 或 UDP 協(xié)議的文件

  1. [root@cghost8 /home/cgyx]# lsof -i TCP | more 
  2. COMMAND      PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME 
  3. sshd        1704   root    3u  IPv4   13593      0t0  TCP *:ssh (LISTEN) 
  4. sshd        1704   root    4u  IPv6   13595      0t0  TCP *:ssh (LISTEN) 
  5. redis-serer   1725   root    4u  IPv4   19773      0t0  TCP localhost:6380 (LISTEN) 
  6. nc          2067   cgyx    4u  IPv4   39167      0t0  TCP *:60600 (LISTEN) 
  7. mysqld      3020  mysql    4u  IPv6 5514608      0t0  TCP 192.168.70.10:mysql->192.168.70.10:37084 (ESTABLISHED) 

使用 lsof -i TCP:3306 列出使用了TCP 協(xié)議并且端口為3306的文件

  1. [root@cghost8 /home/cgyx]# lsof -i TCP:3306 
  2. COMMAND      PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME 
  3. mysqld      3020 mysql    4u  IPv6 5514608      0t0  TCP 192.168.70.10:mysql->192.168.70.10:37084 (ESTABLISHED) 

使用 lsof -i TCP:1-1024 列出使用了TCP協(xié)議并且端口范圍為 1 到 1024 的文件

  1. [root@cghost8 /home/cgyx]# lsof -i TCP:1-1024 
  2. COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME 
  3. sshd     1704   root    3u  IPv4   13593      0t0  TCP *:ssh (LISTEN) 
  4. sshd     1704   root    4u  IPv6   13595      0t0  TCP *:ssh (LISTEN) 
  5. cupsd    1709   root   12u  IPv6   39148      0t0  TCP localhost:ipp (LISTEN) 
  6. cupsd    1709   root   13u  IPv4   39149      0t0  TCP localhost:ipp (LISTEN) 
  7. smbd     1824   root   35u  IPv6   17658      0t0  TCP *:microsoft-ds (LISTEN) 
  8. smbd     1824   root   36u  IPv6   17659      0t0  TCP *:netbios-ssn (LISTEN) 
  9. smbd     1824   root   37u  IPv4   17660      0t0  TCP *:microsoft-ds (LISTEN) 
  10. smbd     1824   root   38u  IPv4   17661      0t0  TCP *:netbios-ssn (LISTEN) 

列出目錄中所有打開的文件

可以使用lsof命令列出指定目錄中的所有打開文件

現(xiàn)有一個(gè)data目錄 ,結(jié)構(gòu)如下:

  1. [root@ecs-centos-7 tt]# tree data/ 
  2. data/ 
  3. ├── dira 
  4. │   └── a.txt 
  5. └── d.s 
  6.  
  7. 1 directory, 2 files 

列出 data 目錄中打開的文件

  1. [root@ecs-centos-7 tt]# lsof +D ./data/ 
  2. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME 
  3. bash    28473 root  cwd    DIR  253,1     4096 131146 ./data 
  4. bash    28502 root  cwd    DIR  253,1     4096 131172 ./data/dira 
  5. vim     28530 root  cwd    DIR  253,1     4096 131172 ./data/dira 
  6. vim     28530 root    4u   REG  253,1    12288 131174 ./data/dira/.a.txt.swp 
  7.  
  8. [root@ecs-centos-7 tt]# lsof +d ./data/ 
  9. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME 
  10. bash    28473 root  cwd    DIR  253,1     4096 131146 ./data 
  11. bash    28502 root  cwd    DIR  253,1     4096 131172 ./data/dira 
  12. vim     28530 root  cwd    DIR  253,1     4096 131172 ./data/dira 

上面例子中,+D 和 +d 選項(xiàng)都是列出目錄中打開的文件

+D 選項(xiàng)會(huì)列出一個(gè)目錄和其子目錄中打開的文件,而 +d 選項(xiàng)只會(huì)列出當(dāng)前目錄下已打開的文件

列出指定進(jìn)程ID打開的文件

進(jìn)程ID是操作系統(tǒng)進(jìn)程的唯一標(biāo)識(shí),以下命令列出了進(jìn)程ID為 1053 相關(guān)的文件, 從結(jié)果中可以知道這個(gè)進(jìn)程ID對(duì)應(yīng)的進(jìn)程是MySQL

  1. [root@ecs-centos-7 ~]# lsof -p 1053 
  2. COMMAND  PID  USER   FD   TYPE             DEVICE  SIZE/OFF    NODE NAME 
  3. mysqld  1053 mysql  cwd    DIR              253,1      4096 1055765 /var/lib/mysql 
  4. mysqld  1053 mysql  rtd    DIR              253,1      4096       2 / 
  5. mysqld  1053 mysql  txt    REG              253,1 251841448  534935 /usr/sbin/mysqld 
  6. mysqld  1053 mysql  mem    REG              253,1    209512  659436 /usr/lib64/mysql/plugin/validate_password.so 
  7. mysqld  1053 mysql    1w   REG              253,1    206658  924771 /var/log/mysqld.log 
  8. mysqld  1053 mysql    2w   REG              253,1    206658  924771 /var/log/mysqld.log 

上述命令中,-p 選項(xiàng)后面可以指定多個(gè)進(jìn)程ID,每個(gè)進(jìn)程ID之間用逗號(hào)分隔,如果想排除掉某個(gè)進(jìn)程打開的文件,可以在該進(jìn)程ID前面加上 ^符號(hào)

  1. lsof -p 1,2,3,^4 

上述命令會(huì)列出進(jìn)程1,進(jìn)程2,進(jìn)程3打開的所有文件,同時(shí)忽略進(jìn)程4打開的文件

殺死指定用戶的所有進(jìn)程

前面介紹了列出指定用戶所有打開的文件,我們可以組合 kill 命令一起使用,實(shí)現(xiàn)殺死指定用戶的所有進(jìn)程的功能,具體的命令如下

  1. kill -9 `lsof -t -u tt` 

上述命令中,lsof -u tt 是列出tt用戶所有打開的文件,加上 -t 選項(xiàng)之后表示結(jié)果只列出PID列,也就是進(jìn)程ID列,其他列都忽略,前面的 kill -9 表示強(qiáng)制結(jié)束指定的進(jìn)程ID

小結(jié)

 

本文介紹了 lsof 命令的一些常見用法,它還有很多其他的用法,請(qǐng)自行查看man文檔

 

責(zé)任編輯:武曉燕 來(lái)源: Linux開發(fā)那些事兒
相關(guān)推薦

2021-12-24 10:15:22

Linux命令lsof

2015-07-28 10:31:48

2009-11-11 10:24:10

linuxecho命令詳解

2019-10-27 22:47:30

Linux命令lsmod

2009-10-15 10:02:39

linuxyum命令詳解

2020-07-09 08:09:21

Linuxdiff命令

2009-10-27 14:48:29

linux下正常關(guān)機(jī)

2009-08-11 09:58:22

Linux命令行Linux命令svn命令

2017-01-12 19:22:19

Linuxlsof命令恢復(fù)刪除的文件

2012-05-11 10:13:54

2010-01-04 09:27:31

Linux壓縮解壓縮命令詳解

2020-07-20 07:45:00

Linux

2017-03-10 15:25:35

Linuxnetstat命令

2020-08-13 07:38:41

Linux screen命令

2021-04-14 16:06:42

Linuxchattr命令

2014-07-24 11:37:54

LinuxTop命令

2022-09-01 12:17:43

SCSI協(xié)議Linux

2011-03-25 09:35:07

2012-05-10 08:46:05

Linuxsort命令

2012-05-10 08:37:54

Linuxxargs
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩国产一区二区三区 | 国产日韩中文字幕 | 黄视频国产| 国产精品久久久久久久久久不蜜臀 | 久久99久久98精品免观看软件 | 91免费版在线观看 | 中文字幕第十五页 | 日韩在线免费播放 | 国产精品久久久久久久毛片 | 国产目拍亚洲精品99久久精品 | 亚洲午夜精品一区二区三区他趣 | 91爱爱·com| 国产欧美一区二区三区另类精品 | 久久久精品日本 | 亚洲精品视频一区二区三区 | 日本三级日产三级国产三级 | 国产成人福利视频 | 在线午夜 | 欧美成人精品一区二区男人看 | 日日操夜夜操天天操 | 成人夜晚看av| 成人午夜视频在线观看 | 国产日韩欧美一区二区 | 国产资源在线播放 | 亚洲国产日韩一区 | 亚洲日韩欧美一区二区在线 | 国产精品国产亚洲精品看不卡15 | 91亚洲国产成人久久精品网站 | 国产999精品久久久 午夜天堂精品久久久久 | 亚洲欧美国产一区二区三区 | 亚洲天天干| 欧美色性 | 久久一区二区视频 | 欧美成人免费在线视频 | 在线观看日韩精品视频 | 91精品国模一区二区三区 | 亚洲一区二区av | 精品欧美一区免费观看α√ | jav成人av免费播放 | 成人在线视频一区 | 久久婷婷国产香蕉 |