Linux Shell脚本基础与信号控制全解析
1. 列出打开的文件描述符
在Linux系统中,仅有九个文件描述符可供使用,理论上管理起来并不复杂。但实际操作时,跟踪文件描述符的重定向位置很容易让人混淆。为解决这一问题,bash shell提供了lsof命令。
lsof命令可列出整个Linux系统中所有打开的文件描述符。不过,这一功能存在一定争议,因为非系统管理员也能通过它获取系统信息。所以,很多Linux系统会隐藏该命令。
在Fedora Linux系统中,lsof命令位于/usr/sbin目录。使用普通用户账户运行时,需使用完整路径名:
$ /usr/sbin/lsof此命令会产生大量输出,显示Linux系统中当前打开的所有文件信息,包括后台运行的进程和登录到系统的用户账户。
lsof命令有许多命令行参数和选项可用于过滤输出,常用的有-p(指定进程ID)和-d(指定要显示的文件描述符编号)。
为方便确定当前进程的PID,可使用特殊环境变量$$,它会被shell设置为当前PID。-a选项用于对其他两个选项的结果进行逻辑与运算:
$ /usr/sbin