Linux

列出 *nix 中所有打開的 ‘.log’ 文件

  • August 11, 2015

作為系統管理員,有時您可能不確定新應用程序的日誌文件路徑。根據系統的不同,可能有多種方法可以找到相同的內容。請分享我們可以獲得系統上打開的日誌文件列表的不同方式。

使用者 X 文件

如果您只需要查看單個使用者的打開文件:

$ lsof -u<user>

或者只有帶有文本文件描述符的文件(通常是真實文件):

$ lsof -a -u<user> -d txt

例子

使用者正在使用的所有文件saml

$ lsof -usaml
COMMAND     PID USER   FD   TYPE             DEVICE  SIZE/OFF       NODE NAME
vim        1341 saml  cwd    DIR              253,2      4096   10370078 /home/saml/mp3s
vim        1341 saml  rtd    DIR              253,0      4096          2 /
vim        1341 saml  txt    REG              253,0   2105272    1215334 /usr/bin/vim
vim        1341 saml  mem    REG              253,0    237616     393586 /lib64/libgssapi_krb5.so.2.2

只有文件使用文本描述符並且歸使用者所有saml

$ lsof -a -usaml -d txt
     Output information may be incomplete.
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
vim        1341 saml txt    REG  253,0  2105272  1215334 /usr/bin/vim
bash       1468 saml txt    REG  253,0   940312  2490450 /bin/bash
gvfsd-htt  1777 saml txt    REG  253,0   179528  1209465 /usr/libexec/gvfsd-http
gnome-key  2051 saml txt    REG  253,0   953664  1214068 /usr/bin/gnome-keyring-daemon
...

lsof 作為根

通常,儘管您希望以lsof提升的權限執行,以便可以查看系統上由 Apache 程序或 root 擁有的所有文件,例如。

$ sudo lsof  

您還可以lsof向後使用並找出打開特定文件的程序。

$ sudo lsof /var/log/messages
     Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 1266 root    4w   REG  253,0   372306 1973825 /var/log/messages

lsof 作為頂部

您也可以使用lsof類似於top每隔幾秒輪詢一次並向您顯示系統上發生的情況的地方。

$ sudo lsof -u saml -c sleep -a -r5

例子

-c ...參數僅顯示名稱中帶有字元串...的程序。在這裡,我使用命令sleep來顯示這一點。我執行lsof每 5 秒輪詢一次的命令,並顯示由任何程序打開的任何文件,其中包含字元串 sleep。然後我跑到sleep 5另一個終端。

$ sudo lsof -u saml -c sleep -a -r5
     Output information may be incomplete.
=======
=======
=======
=======
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
sleep   10780 saml  cwd    DIR  253,2    32768 10354689 /home/saml
sleep   10780 saml  rtd    DIR  253,0     4096        2 /
sleep   10780 saml  txt    REG  253,0    27912  2490470 /bin/sleep
sleep   10780 saml  mem    REG  253,0   151456   393578 /lib64/ld-2.13.so
sleep   10780 saml  mem    REG  253,0  1956608   393664 /lib64/libc-2.13.so
sleep   10780 saml  mem    REG  253,0 99158752  1209621 /usr/lib/locale/locale-archive
sleep   10780 saml    0u   CHR 136,59      0t0       62 /dev/pts/59
sleep   10780 saml    1u   CHR 136,59      0t0       62 /dev/pts/59
sleep   10780 saml    2u   CHR 136,59      0t0       62 /dev/pts/59
=======
=======
=======
=======

日誌文件

您可以lsof通過簡單地使用上述任何輸出來查找您有興趣查看正在發生的事情的日誌文件的名稱來查找日誌文件。

$ lsof .... | grep "log file name"

引用自:https://unix.stackexchange.com/questions/94630