Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到linux进程的开放文件描述?_Linux_Shell_Centos_Lsof - Fatal编程技术网

如何找到linux进程的开放文件描述?

如何找到linux进程的开放文件描述?,linux,shell,centos,lsof,Linux,Shell,Centos,Lsof,在运行go程序时,我发现日志中有很多错误,例如“打开的文件太多”,我只是想知道哪个进程的fds用完了,然后运行以下命令: lsof-n | awk{print$2}| sort | uniq-c | sort-nr 它返回如下结果: 279605 20341 62748 19861 10310 19712 5434 21318 3484 27344 2842 19781 2400 20372 2346 24153 2123 5214 1540 21123 pid为20341的进程是一个m

在运行go程序时,我发现日志中有很多错误,例如“打开的文件太多”,我只是想知道哪个进程的fds用完了,然后运行以下命令:


lsof-n | awk{print$2}| sort | uniq-c | sort-nr

它返回如下结果:


279605 20341
62748 19861
10310 19712
5434 21318
3484 27344
2842 19781
2400 20372
2346 24153
2123 5214
1540 21123

pid为20341的进程是一个mongod进程,对此我感到惊讶。所以我尝试另一种方法:


lsof-p 20341 | wc-l

但让我感到麻烦的是,它的结果是:567

之后,我尝试另一种方法:
ll/proc/20341/fd | wc-l
,结果是496

我现在很困惑,哪一个是对的,它们之间有什么不同

谢谢


更新时间:2018-05-31 10:35:33

  • 获取mongodb PID
    
    [root@node2610:34:54~]$ps aux | grep mongo
    mongodb 20341 2.4 1.9 25419812 1257420?Sl May28107:58/usr/bin/mongod——安静-f/etc/mongod.conf运行
    

  • 命令
    lsof-p
    
    [root@node2610:36:12~]$lsof-P20341 | wc-l
    570
    

  • 目录
    
    [root@node2610:36:33~]$ll/proc/20341/fd/| wc-l
    499
    

  • 命令
    lsof+grep
    
    [root@node2610:37:33~]$lsof | grep 20341 | wc-l
    282223
    

    • 前10
      
      mongod 20341 mongodb cwd目录9127 4096 2/
      mongod 20341 mongodb rtd目录9127 4096 2/
      mongod 20341 mongodb txt注册号9127 12238320 2499177/usr/bin/mongod
      mongod 20341 mongodb成员注册号9127 67108864 1969114/var/lib/mongodb/a_dev.0
      mongod 20341 mongodb成员注册号9127 536870912 1968852/var/lib/mongodb/a_dev.ns
      mongod 20341 mongodb成员注册号9127 67108864 1968447/var/lib/mongodb/a.0
      mongod 20341 mongodb成员注册号9127 536870912 1968347/var/lib/mongodb/a.ns
      mongod 20341 mongodb成员注册号9127 67108864 1968453/var/lib/mongodb/b.0
      mongod 20341 mongodb成员注册号9127 536870912 1968449/var/lib/mongodb/b.ns
      mongod 20341 mongodb成员注册号9127 67108864 1968590/var/lib/mongodb/c.0
      
    • 中10
      
      mongod 20341 27018 mongodb 490u IPv4 14322380 0t0 TCP节点26:27017->节点24:59172(已建立)
      mongod 20341 27018 mongodb 491u IPv4 143758325 0t0 TCP节点26:27017->节点25:43016(已建立)
      mongod 20341 27018 mongodb 492u IPv4 143762443 0t0 TCP节点26:27017->节点24:60602(已建立)
      mongod 20341 27018 mongodb 493u IPv4 154865226 0t0 TCP节点26:27017->节点26:54800(已建立)
      mongod 20341 27018 mongodb 494u IPv4 164046515 0t0 TCP节点26:27017->节点24:42952(已建立)
      mongod 20341 27018 mongodb 495u IPv4 164046516 0t0 TCP节点26:27017->节点24:42960(已建立)
      mongod 20341 27018 mongodb 497u IPv4 154865844 0t0 TCP节点26:27017->节点25:41976(已建立)
      mongod 20341 27018 mongodb 500u IPv4 164046517 0t0 TCP节点26:27017->节点24:42968(已建立)
      mongod 20341 27018 mongodb 502u IPv4 164046518 0t0 TCP节点26:27017->节点26:60306(已建立)
      mongod 20341 27018 mongodb 503u IPv4 164046519 0t0 TCP节点26:27017->节点26:60314(已建立)
      
    • 尾10
      
      mongod 20341 32608 mongodb 492u IPv4 143762443 0t0 TCP节点26:27017->节点24:60602(已建立)
      mongod 20341 32608 mongodb 493u IPv4 154865226 0t0 TCP节点26:27017->节点26:54800(已建立)
      mongod 20341 32608 mongodb 494u IPv4 164046515 0t0 TCP节点26:27017->节点24:42952(已建立)
      mongod 20341 32608 mongodb 495u IPv4 164046516 0t0 TCP节点26:27017->节点24:42960(已建立)
      mongod 20341 32608 mongodb 497u IPv4 154865844 0t0 TCP节点26:27017->节点25:41976(已建立)
      mongod 20341 32608 mongodb 500u IPv4 164046517 0t0 TCP节点26:27017->节点24:42968(已建立)
      mongod 20341 32608 mongodb 502u IPv4 164046518 0t0 TCP节点26:27017->节点26:60306(已建立)
      mongod 20341 32608 mongodb 503u IPv4 164046519 0t0 TCP节点26:27017->节点26:60314(已建立)
      mongod 20341 32608 mongodb 505u IPv4 164046523 0t0 TCP节点26:27017->节点26:60322(已建立)
      mongod 20341 32608 mongodb 730u IPv4 117137926 0t0 TCP节点26:27017->节点25:54730(已建立)
      

/proc/${pid}/fd
包含连接到外壳的文件描述符,在
lsof
中显示为一个数字,后跟一个
u

$ la /proc/$$/fd
total 0
lrwx------ 1 username users 64 May 30 20:08 0 -> /dev/pts/0
lrwx------ 1 username users 64 May 30 20:08 1 -> /dev/pts/0
lrwx------ 1 username users 64 May 30 20:08 2 -> /dev/pts/0
lrwx------ 1 username users 64 May 30 20:08 255 -> /dev/pts/0
$ lsof -p $$
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    3720 username  cwd    DIR  254,3    12288 1835009 /home/username
bash    3720 username  rtd    DIR  254,2     4096       2 /
bash    3720 username  txt    REG  254,2   859688 2890163 /usr/bin/bash
bash    3720 username  mem    REG  254,2    46912 2885785 /usr/lib/libnss_files-2.27.so
bash    3720 username  mem    REG  254,2  2942480 2930144 /usr/lib/locale/locale-archive
bash    3720 username  mem    REG  254,2   457800 2890072 /usr/lib/libncursesw.so.6.1
bash    3720 username  mem    REG  254,2  2105608 2885835 /usr/lib/libc-2.27.so
bash    3720 username  mem    REG  254,2    14144 2885777 /usr/lib/libdl-2.27.so
bash    3720 username  mem    REG  254,2   363064 2890132 /usr/lib/libreadline.so.7.0
bash    3720 username  mem    REG  254,2   177680 2885836 /usr/lib/ld-2.27.so
bash    3720 username    0u   CHR  136,0      0t0       3 /dev/pts/0
bash    3720 username    1u   CHR  136,0      0t0       3 /dev/pts/0
bash    3720 username    2u   CHR  136,0      0t0       3 /dev/pts/0
bash    3720 username  255u   CHR  136,0      0t0       3 /dev/pts/0
它们都是“正确的”,但是
lsof
中的计数与打开的文件用完相关


要查找相关的打开文件限制,请使用
ulimit-n

好的…为什么
lsof | grep
lsof-p
不同?因为
lsof | grep$pid
查找字符串