Linux: find命令 ‘/proc/xxxx/task/xxxx/fd/y’: No such file or directory 解决办法

问题描述:

find命令查找系统中大于50M的文件时,有几行报错: No such file or directory
root@ubuntu:~# find / -size +50M
/proc/kcore
find: ‘/proc/6377/task/6377/fd/6’: No such file or directory
find: ‘/proc/6377/task/6377/fdinfo/6’: No such file or directory
find: ‘/proc/6377/fd/5’: No such file or directory
find: ‘/proc/6377/fdinfo/5’: No such file or directory

/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/home/qingsong/mysql-community-source_5.7.19-1ubuntu17.04_i386.deb
/home/qingsong/mysql-server_5.7.19-1ubuntu17.04_i386.deb-bundle.tar
/swapfile

原因分析:

上面的例子中,6377就是运行find命令时,find命令的PID,只在运行期间出现,等find命令运行完成之后,就会消失,报出了No such file or directory的错误,如果在find命令运行完成之前,按下Ctrl+z将其暂停,就能找到相应的文件
root@ubuntu:~# find / -size +50M
/proc/kcore
^Z
[1]+ Stopped find / -size +50M
root@ubuntu:~# ps -ef | grep -i find
root 6378 5919 1 08:16 pts/0 00:00:00 find / -size +50
root 6384 5919 0 08:16 pts/0 00:00:00 grep --color=auto -i find
root@ubuntu:~# ls -ld /proc/6378
dr-xr-xr-x 9 root root 0 Aug 22 08:16 /proc/6378
root@ubuntu:~# jobs
[1]+ Stopped find / -size +50M
root@ubuntu:~# fg %1
find / -size +50M
find: ‘/proc/6378/task/6378/fd/6’: No such file or directory
find: ‘/proc/6378/task/6378/fdinfo/6’: No such file or directory
find: ‘/proc/6378/fd/5’: No such file or directory
find: ‘/proc/6378/fdinfo/5’: No such file or directory
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/home/qingsong/mysql-community-source_5.7.19-1ubuntu17.04_i386.deb
/home/qingsong/mysql-server_5.7.19-1ubuntu17.04_i386.deb-bundle.tar
/swapfile

解决办法:

其实是查找这些文件时出错,那把标准错误重定向一下即可,例如重定向到文件:
root@ubuntu:~# find / -size +50M 2> findError.log
/proc/kcore
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/home/qingsong/mysql-community-source_5.7.19-1ubuntu17.04_i386.deb
/home/qingsong/mysql-server_5.7.19-1ubuntu17.04_i386.deb-bundle.tar
/swapfile
root@ubuntu:~# cat findError.log
find: ‘/proc/6394/task/6394/fd/6’: No such file or directory
find: ‘/proc/6394/task/6394/fdinfo/6’: No such file or directory
find: ‘/proc/6394/fd/5’: No such file or directory
find: ‘/proc/6394/fdinfo/5’: No such file or directory

或者丢掉:
root@ubuntu:~# find / -size +50M 2> /dev/null
/proc/kcore
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/home/qingsong/mysql-community-source_5.7.19-1ubuntu17.04_i386.deb
/home/qingsong/mysql-server_5.7.19-1ubuntu17.04_i386.deb-bundle.tar
/swapfile

相关知识:

linux中的标准输入、输出、错误输出分别如下:
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

如果想要将上面find命令中的标准输出和标准错误分别重定向到file.lst和error.out中,可以这样写:
root@ubuntu:~# find / -size +50M > file.lst 2> error.out

如果想把"完整"的find命令的输出都重定向到文件中,可以使用下面的命令:
root@ubuntu:~# find / -size +50M > find.out 2>&1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值