天天看點

Linux指令神器-Lsof

Lsof(list open files)是一個列出目前系統打開檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以通路正常資料,還可以通路網絡連接配接和硬體。

Lsof是遵從Unix哲學的典範,它隻完成一個功能,并且做的相當完美--它可以列出某個程序打開的所有檔案資訊。打開的檔案可能是普通的檔案、目錄、NFS檔案、塊檔案、字元檔案、共享庫、正常管道、命名管道、符号連結、Socket流、網絡Socket,以及其它更多類型。因為,“一切皆檔案”乃為Unix系統的重要哲學思想之一,是以可以想象lsof指令的重要地位。

格式: lsof     [option]    filename

    lsof /path/to/somefile:顯示打開指定檔案的所有程序的清單

    lsof -c sting:顯示其COMMAND列中包含指定字元(string)的程序所有打開的檔案;此選項可以重複使用,以指定多個模式;

    lsof -p PID:檢視該程序打開了哪些檔案;程序号前可以使用脫字元“^”取反;

    lsof -u USERNAME:顯示指定使用者的程序打開的檔案;使用者名前可以使用脫字元“^”取反,如“lsof -u ^root”則用于顯示非root使用者打開的所有檔案;

    lsof -g GID:顯示歸屬gid的程序情況

    lsof +d /DIR/:顯示指定目錄下被程序打開的檔案

    lsof +D /DIR/:基本功能同上,但lsof會對指定目錄進行遞歸查找,注意這個參數要比grep版本慢;

    lsof -a:按“與”組合多個條件,如lsof -a -c apache -u apache

    lsof -N:列出所有NFS(網絡檔案系統)檔案

    lsof -d FD:實作指定檔案描述符的相關程序;也可以為描述符指定一個範圍,如0-2表示0,1,2三個檔案描述符;另外,-d還支援其他很多特殊值,如:

    mem:列出所有記憶體映射檔案;

    mmap:顯示所有記憶體映射裝置;

    txt:列出所有加載在記憶體中并正在執行的程序,包含code和data;

    cwd:正在通路目前的程序清單;

    lsof -n:不反解IP至HOSTNAME

    lsof -i:用以顯示符合條件的程序情況

    lsof -i [46] [protocol][@host

本文轉自 SoulMio 51CTO部落格,原文連結:http://blog.51cto.com/bovin/1840395,如需轉載請自行聯系原作者

繼續閱讀