shell_58.Linux列出打开的文件描述符

列出打开的文件描述符
1.能用的文件描述符只有 9 个,你可能会觉得这没什么复杂的。但有时要记住哪个文件描述符被重定向到了哪里就没那么容易了。
lsof 命令会列出整个 Linux 系统打开的所有文件描述符,这包括所有后台进程以及登录用户打开的文件。

$ /usr/sbin/lsof -a -p $$ -d 0,1,2 
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME 
bash 3344 rich 0u CHR 136,0 2 /dev/pts/0 
bash 3344 rich 1u CHR 136,0 2 /dev/pts/0 
bash 3344 rich 2u CHR 136,0 2 /dev/pts/0 
$

2.lsof 的默认输出

COMMAND     进程对应的命令名的前 9 个字符
PID         进程的 PID 
USER        进程属主的登录名
FD          文件描述符编号以及访问类型(r 代表读,w 代表写,u 代表读/写)
TYPE        文件的类型(CHR 代表字符型,BLK 代表块型,DIR 代表目录,REG 代表常规文件)
DEVICE      设备号(主设备号和从设备号)
SIZE        如果有的话,表示文件的大小
NODE        本地文件的节点号
NAME        文件名
$ cat test18 
#!/bin/bash 
# testing lsof with file descriptors 
exec 3> test18file1 
exec 6> test18file2 
exec 7< testfile 
/usr/sbin/lsof -a -p $$ -d0,1,2,3,6,7 
$ ./test18 
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME 
test18 3594 rich 0u CHR 136,0 2 /dev/pts/0 
test18 3594 rich 1u CHR 136,0 2 /dev/pts/0 
test18 3594 rich 2u CHR 136,0 2 /dev/pts/0 
18 3594 rich 3w REG 253,0 0 360712 /home/rich/test18file1 
18 3594 rich 6w REG 253,0 0 360715 /home/rich/test18file2 
18 3594 rich 7r REG 253,0 73 360717 /home/rich/testfile 
$


个脚本创建了 3 个替代性文件描述符,两个用作输出(3 和 6),一个用作输入(7)。
在脚本运行 lsof 命令时,你会在输出中看到新的文件描述符。我们去掉了输出中的第一部分,这样就能看到最终的文件名了。
文件名显示了文件描述符所使用文件的完整路径。每个文件都显示为 REG 类型,说明这些是文件系统中的常规文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微辣已是极限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值