日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

lsof 命令用于列出 linux 等操作系統中打開的文件。名稱 lsof 本身就是從這個功能派生出來的。

在本指南中,我們將通過 18 個不同的實際示例學習 lsof 命令。

在哪里使用 lsof ?

Lsof 命令主要用于檢索各個進程打開的文件信息。系統中打開的文件可以是磁盤文件、網絡套接字、命名管道和設備。lsof 命令的這一獨特特性,使人們能夠更好地調試和理解 Linux 操作系統。

如何安裝 lsof ?

當我們最小安裝 RHEL / centos / AlmaLinux / Ubuntu / OpenSUSE 的時,lsof 不是默認安裝的一部分,因此使用以下命令來安裝 lsof 命令。

RHEL / CentOS / AlmaLinux / Fedora 系統下安裝

$ sudo yum install lsof -yor$ sudo dnf install lsof -y

Debian 系列 (Ubuntu / Linux Mint) 系統下安裝

$ sudo apt install lsof -y

OpenSUSE 系統下安裝

$ sudo zypper install lsof1) 列出所有打開的文件

不帶任何選項地運行 lsof 命令將列出系統中所有活動進程打開的文件。

注意:由于 lsof 輸出給了 STDOUT 很多信息,最好使用管道 | 操作來逐頁查看這個輸出。

# lsof | more


 

如果仔細檢查,上面的命令輸出提供了許多參數的信息。例如,進程 systemd 的進程號 (PID) 為 1,用戶為 root,文件描述符 (FD) 為 cwd 等等。

FD 有很多值,因為在 linux 系統中,文件描述符是為任何打開的文件自動生成的。下面是用于 lsof 命令的一些眾所周知的 FD 值


 

注意:在某些情況下,mem 后面跟著數字和各種字符,如 r, u, w 等。這些字符是 r 表示讀,w 表示寫,u 表示讀和寫。

回顯中的 TYPE 為文件類型,以下是 Linux 系統中標準的文件類型。


 

與此一起顯示的其他字段如下所示

 

  • DEVICE –> Device id
  • SIZE/OFF –> Actual size of this process (taken during run time)
  • NODE –> Typically inode number of the directory or parent directory
  • NAME –> Path or link
2) 列出特定文件系統打開的文件

 

如您所知,/proc 只在 Linux 操作系統的生命周期內存在,這個目錄包含了許多重要的進程相關信息。在 /proc 上執行 lsof 將拋出有趣的輸出

# lsof /proc


 

如前所述,此處捕獲 lsof 本身的 lsof,并顯示所有細節。除了 lsof,還有其他進程,如 systemd 和 rsyslogd,它們是用于交換、掛載等目的的守護進程。

同樣的, 我們可以列出另一個文件系統的打開的文件

# lsof /var/log/

某些情況下,使用 df 和 du 命令相同文件系統卻顯示不同磁盤使用情況,使用 losf 變得非常方便,使用 lsof 命令我們可以找到在某些進程打開和使用時被刪除的文件。

# lsof /var/log | grep -i "deleted"

上面的命令會給你被刪除的文件的 pid,但它們仍然存在于系統中,處于刪除狀態。因此,為了釋放文件系統的空間,我們可以通過 pid 來安全地殺死這些進程。

3) 顯示 lsof 命令打開的文件列表

lsof 本身拋出一個錯誤消息

# lsof lsoflsof: status error on lsof: No such file or directorylsof 4.874) 列出用戶打開的文件

lsof 可用于所有已登錄 Linux 系統的用戶。在這種情況下,lsof 將顯示相應用戶打開的所有文件。

列出 root 用戶打開的所有文件

# lsof -u root | more


 

非 root 用戶打開的文件列表,讓我們查看 linuxtechi 用戶打開的所有文件

# lsof -u linuxtechi | moreOr# lsof -l -u linuxtechi | more


 

要列出除 root 外的所有打開的文件

# lsof -u ^root | more


 

5) 列出所有開放的 Inte.NET 和 UNIX 域文件

使用 -i -U 選項列出系統上所有打開的 internet 和 UNIX 域文件,示例如下

# lsof -i -U


 

6) 列出所有打開的 IPv4 網絡文件

使用-i -4 選項列出 IPv4 所有打開的網絡文件

# lsof -i 4


 

列出特定進程所有打開的 IPv4 網絡文件

語法如下 :

lsof -i 4 -a -p {process_pid}

# lsof -i 4 -a -p 1633COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMErpcbind 1633 rpc 4u IPv4 16576 0t0 TCP *:sunrpc (LISTEN)rpcbind 1633 rpc 5u IPv4 16577 0t0 UDP *:sunrpcrpcbind 1633 rpc 10u IPv4 16649 0t0 UDP *:9607) 列出所有 ipv6 打開的網絡文件

假設支持 ipv6 域,則可以使用 -i 6 選項列出打開的網絡文件。

# lsof -i 6


 

8) 列出在特定端口上運行的所有 TCP 和 UDP 進程

語法如下:

lsof -i TCP/UDP:port

假設我們想要列出 80 端口上運行的所有 TCP 進程,使用下面的命令

# lsof -i TCP:80COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEhttpd 2594 root 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2595 Apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2598 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)httpd 2599 apache 4u IPv6 22703 0t0 TCP *:http (LISTEN)[root@linuxtechi ~]#

列出 TCP 端口范圍(1 到 1048)上所有打開的文件

# lsof -i TCP:1-1048


 

列出在特定端口上運行的所有 UDP 進程

# lsof -i UDP:16498COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEdhclient 2494 root 21u IPv6 20952 0t0 UDP *:16498

注意:要列出 linux 系統上所有打開的 UDP 進程,請使用 lsof -i UDP 命令

9) 查看指定設備的所有打開文件

語法如下:

lsof

查看設備 /dev/sda2 打開的文件

# lsof /dev/sda2


 

10) 查看 NFS 文件系統中已打開文件的進程

在某些情況下,您已經在 linux 機器上掛載了 nfs 文件系統,但是 nfs 服務器無法訪問,并且希望列出該 nfs 文件系統上打開的所有進程

# lsof -b11) 顯示終端相關的打開文件

下面的命令用于終端上所有打開的文件

lsof /dev/tty {number}

# lsof /dev/tty1COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 2442 root 0u CHR 4,1 0t0 4689 /dev/tty1bash 2442 root 1u CHR 4,1 0t0 4689 /dev/tty1bash 2442 root 2u CHR 4,1 0t0 4689 /dev/tty1bash 2442 root 255u CHR 4,1 0t0 4689 /dev/tty112) 列出與應用程序關聯的打開文件

假設我們想要列出所有與 httpd 相關的打開文件

# lsof -c httpd


 

13) 列出所有網絡連接

使用 -i 選項列出所有與網絡相關的進程,示例如下

# lsof -i


 

14) 查看 IPv4 / IPv6 套接字文件

查看 IPv4 套接字文件

# lsof -i@192.168.1.189


 

通過帶有一系列零的相關數字冒號形式的地址查找 IP 版本 6 的套接字文件,例如,循環地址(127.0.0.1)

# lsof -i@[::1]COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEmaster 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp (LISTEN)15) 列出屬于某個進程 ID 的所有進程

假設我們想要列出屬于特定進程 id 的所有進程,示例如下

# lsof -p 1598


 

16) 終止用戶的所有進程

殺死所有屬于 linuxtechi 用戶的進程

# kill -9 `lsof -t -u linuxtechi`17) 查看特定目錄下所有打開的文件

語法如下:

lsof +D

列出 /var/log 目錄下打開的所有文件

# lsof +D /var/log/


 

注意:在上面的命令中,如果我們使用 +D 選項,那么 lsof 將遞歸地列出目錄中所有打開的文件,如果你不想遞歸地列出目錄中打開的文件,那么使用 +d 選項

18) 檢查誰打開日志文件(找到 PID)

下面的命令用于查找是誰打開了/var/log/httpd/access.log 文件,以及該進程的 PID 是什么。然后用“ps -ef”命令我們可以找到確切的用戶

# lsof -t /var/log/httpd/access_log310931103111311231133114# ps -ef | grep -E "3109|3110|3111|3112|3113|3114" | grep -v grepor# ps -fp "$(lsof -t /var/log/httpd/access_log | xargs echo)"root 3109 1 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 3110 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 3111 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 3112 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 3113 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUNDapache 3114 3109 0 03:36 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND我的開源項目


 

 

  • course-tencent-cloud(酷瓜云課堂 - gitee 倉庫)
  • course-tencent-cloud(酷瓜云課堂 - github 倉庫)

 

分享到:
標簽:lsof
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定