如何使用Linux lsof命令列出打开的文件

・4 分钟阅读

lsof命令背景

命令列表中运行的进程打开的文件,Linux lsof命令列出了有关文件的信息,(lsof命令本身代表"list of open files"),在本文中我将共享一些lsof命令例子。

另一个注意:在这些例子中,我假设你是以unix/Linux root用户身份登录的,如果没有,则lsof命令输出受到极大限制,如果你以非root用户身份登录,建议使用su到root,或者使用sudo运行这些命令。

基本Linux lsof命令例子

键入lsof命令将列出系统上所有活动进程所有打开的文件:

$ lsof

在我运行了很长时间的Mac OS X系统上,这显示了1,582个打开的文件:

$ lsof | wc -l 1582

lsof添加head命令显示了以下输出的内容:

$ lsof | headCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
loginwind 32 Al cwd DIR 14,2 1564 2 /
loginwind 32 Al txt REG 14,2 1754096 243026930 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow
loginwind 32 Al txt REG 14,2 113744 3190067 /System/Library/LoginPlugins/FSDisconnect.loginPlugin/Contents/MacOS/FSDisconnect
loginwind 32 Al txt REG 14,2 425504 117920371 /System/Library/LoginPlugins/DisplayServices.loginPlugin/Contents/MacOS/DisplayServices
loginwind 32 Al txt REG 14,2 3144 3161654 /System/Library/ColorSync/Profiles/sRGB Profile.icc
loginwind 32 Al txt REG 14,2 96704 242998403 /System/Library/PrivateFrameworks/MachineSettings.framework/Versions/A/MachineSettings
loginwind 32 Al txt REG 14,2 51288 251253153 /private/var/folders/h5/h59HESVvEmG+3I4Q8lOAxE+++TI/-Caches-/mds/mdsDirectory.db
loginwind 32 Al txt REG 14,2 724688 117923285 /System/Library/LoginPlugins/BezelServices.loginPlugin/Contents/MacOS/BezelServices
loginwind 32 Al txt REG 14,2 329376 117923166 /System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin/Contents/MacOS/IOHIDLib

常见的lsof选项

如前所述,这些详细信息有1,582行,所以,通过使用grep命令有助于排除输出。

此命令列出所有属于PID (进程ID )11925的打开文件:

$ lsof -p 11925

此命令列出属于名为"al "的用户进程的所有打开的文件:

$ lsof -u al

此命令列出在指定目录中打开的文件,但是,它不包含子目录:

$ lsof +d '/Users/al'

下一个命令列出在指定目录中打开的文件,并包含子目录。注意:这可能需要很长的时间来运行大型目录结构:

$ lsof +d '/Users/al'

摘要:Linux lsof命令例子

我希望这些Linux lsof命令示例有所帮助。正如你所看到的,lsof命令可用于在Unix和Linux系统上生成打开文件的列表,其中包含针对不同情况的各种不同命令行选项。

Syq2803 profile image