Linux進階命令-lsof

作者介紹:簡歷上沒有一個精通的運維工程師。請點擊上方的藍色《運維小路》關注我,下面的思維導圖也是預計更新的內容和當前進度(不定時更新)。

Linux進階命令-lsof

在上一章節中,我們詳細講解了linux系統自帶的日志服務,幫助大家對其有了初步的了解。接下來,我們將深入探討一些進階命令,這些命令涵蓋了系統操作、系統查看和處理、Linux文本處理、邏輯判斷、重定向、網絡傳輸、服務啟動、文件句柄等方面。通過學習這些操作,您將能夠更加靈活地操作Linux系統。具體內容將分為以下章節進行講解:

Linux進階命令-echo&date&alias

Linux進階命令-top

Linux進階命令-ps&kill

Linux進階命令-sort&wc

Linux進階命令-sed&split

Linux進階命令-awk&uniq

Linux進階命令-邏輯或&邏輯與

Linux進階命令-重定向

Linux進階命令-scp

Linux進階命令-rsync

Linux進階命令-rsync-daemon

Linux進階命令-nohup&screen

Linux進階命令-lsof(本章節)

Linux進階命令-小結

在介紹Linux入門-Linux目錄時,我們提到過,Linux系統中一切皆文件;在講解Linux基礎軟件-庫文件時,我們也提到,庫文件實際上是系統自帶的一些函數的集合,普通應用程序通過調用這些函數來實現對文件的增刪查改等操作。同樣,在Linux中有一個命令lsof,可以用來顯示所有打開的文件。這個命令與ps命令類似,ps用于查看所有進程,而lsof則用于查看所有打開的文件。

lsof

lsof是一個在類unix操作系統中用于列出打開文件的工具。這個命令的名字源自“list open files”的縮寫。在Unix和類Unix系統中,文件不僅僅指的是磁盤上的文件,還包括各種類型的文件,如目錄、設備、管道、套接字等。使用lsof命令,您可以查看哪些進程打開了哪些文件,以及這些文件的狀態。

在最小化安裝的情況下,lsof命令通常不會自帶,需要手動安裝。

yum -y install lsof

常用選項和用法

  1. 列出所有打開的文件
lsof

這個命令將列出系統中所有打開的文件和相關的進程信息,但由于信息量巨大,通常不具備參考意義,除非用于過濾和搜索。

  1. 根據文件名查找
lsof /path/to/file

顯示哪個進程打開了指定路徑的文件。

  1. 根據進程ID查找
lsof -p <pid>

顯示指定進程ID打開的所有文件。在實際應用中,如果某些應用程序找不到它們使用的配置或日志文件,可以通過這種方式找到它們所使用的配置或日志文件。

  1. 根據用戶查找
lsof -u <username>

顯示由指定用戶打開的所有文件。

  1. 根據端口查找
lsof -i :<port>

顯示所有使用指定端口的網絡連接和進程,可以替代netstat和ss命令的部分功能。

  1. 查看網絡文件
lsof -i

列出所有網絡連接和相關的進程,相當于ss和netstat命令。

  1. 查看目錄文件
lsof +D /usr

列出該目錄下被打開的文件。

  1. 檢查是否有刪除的文件仍然被打開
lsof | grep '(deleted)'

顯示那些被刪除的文件仍然被進程打開,因此某些未確定的大文件可以通過Linux進階命令-重定向的方式來釋放空間。

COMMAND:啟動文件的命令名。PID:進程ID。TID:線程ID(對于多線程進程)。USER:打開文件的用戶。FD:文件描述符,指示文件在進程中的訪問方式。TYPE:文件類型(如REG表示常規文件,DIR表示目錄,CHR表示字符設備等)。DEVICE:設備號,標識文件所在的設備。SIZE/OFF:文件大小或偏移量。NODE:文件的節點號。NAME:文件的名稱或路徑。

總結

lsof最常用的可能是找出刪除文件而空間未釋放的問題,也就是第八個用法。當然,這個時候文件仍然可以恢復,具體內容將在講解proc時詳細說明。

Linux進階命令-lsof

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享