查詢Linux系統中使用檔案的程序
摘要
可能出現這種情況:即使您知道沒有人嘗試訪問共享,您也無法解除安裝它。這通常在掛載共享時出現。您可能遇到的潛在錯誤是“檔案繁忙”,或者我們有時在嘗試訪問檔案時可能會看到“檔案繁忙”的提示。這表示系統上有一個正在使用該檔案的活動程序,並將其開啟以進行讀取或寫入操作。有時,發生這種情況時,我們需要找出哪個程序正在使用該檔案。
本教程將識別使用檔案的程序。
注意 − Linux 命令區分大小寫。
查詢程序的命令
有一些命令可以幫助我們找到處理檔案的程序,所以我們將從這裡開始。這些命令從Linux核心收集資訊,因為它管理程式和檔案系統等等。
fuser命令
名為fuser的Linux命令可用於確定哪個程序正在使用特定的檔案、目錄或套接字。此外,它還提供有關訪問型別和負責操作該程序的使用者的資訊。
fuser 也可以使用 -v 選項以詳細模式使用。使用詳細選項生成更多輸出,以便使用者可以看到 fuser 正在做什麼。使用 -v 選項執行 fuser,
$ fuser -v scripts.txt
輸出
USER PID ACCESS COMMAND /run/sripts.txt: student 64589 ..c.. less
fuser 命令中的 -k 標誌也可用於停止或終止在特定埠上執行的程序。
$ fuser -k scripts.txt
輸出
/run/sripts.txt: 52349
為了再次驗證程序是否已被終止,我們將再次查詢“scripts.txt”檔案,
$ fuser -v scripts.txt
輸出
none of the processes are using scripts.txt
再說一次,我遇到過一些情況,一些已刪除的程序會繼續鎖定檔案,直到它們的父程序或連線到該程序的應用程式執行完畢。您可能需要使用額外的選項(例如以下示例中的選項)來檢視某些檔案。
lsof命令
lsof 命令代表“列出開啟的檔案”,但它也可以用於其他目的。一個常見的誤解是 Linux 中的一切都是檔案。在許多方面這是正確的,因此識別開啟檔案的工具實際上非常有用。
要找出誰正在使用檔案系統上的任何檔案,請使用 lsof 命令。在 Linux 檔案系統上執行 lsof 命令將產生以下結果,其中顯示了使用該檔案的任何程序的所有者和程序詳細資訊。
$ lsof /dev/run/files
輸出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1480 student 0r CHR 1,3 0t0 6 /dev/run/files sh 1501 student 0r CHR 1,3 0t0 6 /dev/run/files sh 1501 student 1w CHR 1,3 0t0 6 /dev/run/files dbus-daem 1530 student 0u CHR 1,3 0t0 6 /dev/run/files Xfce4-seb 1603 student 0r CHR 1,3 0t0 6 /dev/run/files xfce4-ses 1603 student 1w CHR 1,3 0t0 6 /dev/run/files at-spi-b 1604 student 0r CHR 1,3 0t 6 /dev/run/files dbus-daem 1609 student 0u CHR 1,3 0t0 6 /dev/run/files
執行以下命令,列出使用者特定的開啟檔案
$ lsof -u student
輸出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1480 student cwd DIR 8,3 4096 2 / systemd 1480 student rtd DIR 8,3 4096 2 / systemd 1480 student txt REG 8,3 1595792 3147496
結論
在本教程中,我們學習了一些使用 fuser 和 lsof 命令監控 Linux 系統上正在使用的埠和目錄的示例。如果您試圖識別可能在您的系統上執行的任何未知程式,這些命令會特別有用。我希望您能發現這些命令示例有用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP