Chinaunix首页 | 论坛 | 博客
  • 博客访问: 794345
  • 博文数量: 108
  • 博客积分: 2887
  • 博客等级: 少校
  • 技术积分: 1570
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-28 07:51
文章分类

全部博文(108)

文章存档

2012年(4)

2011年(86)

2010年(18)

分类: Python/Ruby

2011-04-19 20:22:31

      在linux系统中,将每一个对象当作文件处理,并且使用文件描述符来标识每一个文件对象。文件描述符是一个非负
整数,唯一标识会话中打开的文件。
       每一个进程中最多可以有9个打开文件的描述符。

bash  shell保留了3个文件描述符!
0           STDIN               标准输入
1           STDOUT           标准输出
2           STDERR            标准错误


linux下,我们可以使用lsof命令来列出整个linux系统上所有的开放文件描述符,并能显示当前开放的每个文件的
相关的信息,包括后台运行的进程,以及所有登录到系统的用户账户。

常用的选项:-p    指定进程的ID(PID)。
                     -d    指定要想显示的文件描述符。

eg:
[olz@jieoulinux scripts]$ lsof -a -p $$ -d 0,1,2

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

bash    3964  olz    0r   CHR  136,1      0t0    4 /dev/pts/1
bash    3964  olz    1u   CHR  136,1      0t0    4 /dev/pts/1
bash    3964  olz    2u   CHR  136,1      0t0    4 /dev/pts/1


上面的输出中:
COMMAND              表示进程中命令名称的前九个字符
PID                            表示进程的ID
user                          表示拥有进程的用户的登录名
FD                             表示文件描述符编号和访问类型(r-读取    w-写入    u-读取/写入)
TYPE                         表示文件类型(CHR-字符   BLK-块    DIR-目录   REG-常规文件)
DEVICE                     表示设备的设备编号(主要和次要)
SIZE/OFF                  表示如果可用,为文件的大小
NODE                        表示文件的节点编号
NAME                        表示文件的名称


STDIN,STDOUT,STDERR文件描述符都指向终端,所以输出文件的名称为终端的设备名。


从打开几个备选文件描述符的脚本内部查看lsof命令的结果:

  1 #!/bin/bash
  2 #   testing lsof with file descriptors
  3
  4 exec 3>test18file1
  5 exec 6>test18file2
  6 exec 7  7
  8 /usr/sbin/lsof -a -p $$ -d 0,1,2,3,4,5,6,7  

[olz@jieoulinux scripts]$ ./test18
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
test18  8224  olz    0u   CHR  136,1      0t0      4 /dev/pts/1
test18  8224  olz    1u   CHR  136,1      0t0      4 /dev/pts/1
test18  8224  olz    2u   CHR  136,1      0t0      4 /dev/pts/1
test18  8224  olz    3w   REG    8,4        0 529878 /home/olz/scripts/test18file1
test18  8224  olz    6w   REG    8,4        0 530177 /home/olz/scripts/test18file2
test18  8224  olz    7r   REG    8,4       73 529826 /home/olz/scripts/testfile
                                                    

阅读(2755) | 评论(0) | 转发(1) |
0

上一篇:VLAN间路由

下一篇:shell学习之调度优先级

给主人留下些什么吧!~~