Linux重定向文件描述符FD

目录

一、简介

1、概述

2、图示解释

二、查看进程的FD信息

1、通过vim查看进程FD信息

1)通过一个终端,打开一个文本

2)通过另一个终端,查询文本进程的进程号

3)在/proc目录中查看文本进程的FD


 

一、简介

1、概述

        我们知道在Linux系统中的一切都可以被视为文件,文件可以分为:普通文件、目录文件、链接文件和设备文件。在操作这些所谓的文件时,我们每次都会找到一个名字,这需要很多时间和效率。Linux规定每个文件对应一个索引,以便在操作文件时,我们可以直接找到索引进行操作。

        文件描述符(file descriptor)为了有效地管理这些已经打开的文件创建的索引,它是一个非负整数(通常是小整数),用于指代打开的文件,所有执行I/O操作系统的呼叫是通过文件描述符实现的。同时,还规定,当系统刚刚启动时,0是标准输入,1是标准输出,2是标准错误。

2、图示解释

 FD是访问文件的标识,即链接文件:

        0是键盘只读。

        1、2是终端,可以理解是屏幕。

        3+是文件,可读可写。

48cb0a1151d6439db210f80b95820f6f.png

2a556e65643b4bcd94e962836e442788.png


 

二、查看进程的FD信息

通过熟悉的vim的进程来观察进程的FD信息

1、通过vim查看进程FD信息

1)通过一个终端,打开一个文本

命令:vim  文件名

[root@localhost ~]# vim /test/file1    //编辑file1文件

2)通过另一个终端,查询文本进程的进程号

命令:ps aux | grep vim

[root@localhost ~]# ps aux | grep vim                //查看vim进程
root       2558  0.0  0.5 149808  5540 pts/0    S+   08:22   0:00 vim /test/file1
root       2615  0.0  0.0 112824   976 pts/1    R+   08:23   0:00 grep --color=auto vim

//进程号为2558

3)在/proc目录中查看文本进程的FD

首先介绍一下proc

ls  /proc                //查看proc目录内容

[root@localhost ~]# ls /proc
1     1828  2102  2291  281  405  694     buddyinfo    meminfo
10    1841  2111  2292  285  406  695     bus          misc
11    1853  2116  2294  287  407  697     cgroups      modules
1120  1854  2126  23    291  41   698     cmdline      mounts
1122  1881  2132  2304  292  43   7       consoles     mpt
1124  1885  2133  2305  294  44   700     cpuinfo      mtrr
1126  1890  2137  2306  296  45   701     crypto       net
1136  19    2144  2307  297  47   702     devices      pagetypeinfo
1149  1971  2148  2327  3    489  704     diskstats    partitions
1151  1985  2150  2332  30   5    706     dma          sched_debug
1152  1990  2154  2336  300  506  707     driver       schedstat
13    1996  2157  2338  301  525  717     execdomains  scsi
1359  2     2158  2341  31   569  736     fb           self
1361  20    2159  2360  32   573  738     filesystems  slabinfo
1387  2022  2180  24    33   574  744     fs           softirqs
14    2034  2183  2407  372  577  749     interrupts   stat
1402  2038  2186  2412  373  580  751     iomem        swaps
1403  2043  2187  2457  383  582  756     ioports      sys
1435  2046  2188  2463  384  586  760     irq          sysrq-trigger
15    2054  2192  2464  396  588  761     kallsyms     sysvipc
1597  2058  2197  25    397  6    8       kcore        timer_list
16    2060  22    2558  398  60   807     keys         timer_stats
1655  2065  2204  2570  399  663  809     key-users    tty
1665  2074  2208  264   4    665  824     kmsg         uptime
1667  2076  2213  2649  400  667  862     kpagecount   version
17    2080  2242  2650  401  669  9       kpageflags   vmallocinfo
1753  2093  2264  278   402  670  95      loadavg      vmstat
18    2094  2274  279   403  692  acpi    locks        zoneinfo
1815  21    2275  280   404  693  asound  mdstat

所有的进程都会存放到该目录中,刚刚的vim进程也在其中(进程号为2558,倒数第八行的第四列),每运行一个进程proc目录中都会多出一个相应的进程号命名的文件夹。

查看2558目录的内容

[root@localhost ~]# ls /proc/2558
attr             cwd       map_files   oom_adj        schedstat  task
autogroup        environ   maps        oom_score      sessionid  timers
auxv             exe       mem         oom_score_adj  setgroups  uid_map
cgroup           fd        mountinfo   pagemap        smaps      wchan
clear_refs       fdinfo    mounts      patch_state    stack
cmdline          gid_map   mountstats  personality    stat
comm             io        net         projid_map     statm
coredump_filter  limits    ns          root           status
cpuset           loginuid  numa_maps   sched          syscall

在第二列的第四行有个fd文件,里面存放了fd信息

查看进程2558的fd信息

[root@localhost ~]# ls /proc/2558/fd
0  1  2  4

2558的fd信息为0,1,2,4

你的点赞是对我的激励!!!

你的评论是对我的勉励!!!

你的收藏是对我的认可!!!

你的关注是我们之间距离的增进!!!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sure云小硕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值