12.6 列出打开的文件
lsof
在第1章中讨论过,Linux系统中的所有东西都是文件,包括目录、网络连接和设备。这意味着,即使在你看来只打开了一个文件(例如,写给妈妈的一封信),而实际上系统在这个时候打开了几千个文件。确实如此,几千个文件! 要查看完整的打开文件列表,可以使用lsof
命令(list open files的缩写)。
实际上不应该这么做。如果只运行lsof
命令(要得到全部的结果列表,需要以root用户来运行),得到的输出列表将包含几千个文件的信息。在这个系统中有5 497个文件正在打开和使用中。不过,为了在任何时候能够了解计算机中有多少个文件正在使用,lsof
仍然不失为一种好办法。
将lsof
的输出通过管道传递给less
命令,则可以一次只查看一屏的结果。
# lsof | less
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 3,1 656 2 /
init 1 root rtd DIR 3,1 656 2 /
init 1 root txt REG 3,1 31608 2072 /sbin/init
仍然是5 497个结果,分成了许多屏,得翻页查看。也可以把lsof
的输出通过管道传递给grep
命令。不过,在接下来的几节中可以看到,lsof
命令就提供了过滤掉你不想看到的数据的方法,只显示所有打开文件中让你感兴趣的那部分。