问题描述:
find命令查找系统中大于50M的文件时,有几行报错: No such file or directoryroot@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.
/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.
/swapfile
解决办法:
其实是查找这些文件时出错,那把标准错误重定向一下即可,例如重定向到文件:root@ubuntu:~# find / -size +50M 2>
/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.
/swapfile
root@ubuntu:~# cat
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.
/swapfile
相关知识:
linux中的标准输入、输出、错误输出分别如下:1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
如果想要将上面find命令中的标准输出和标准错误分别重定向到和中,可以这样写:
root@ubuntu:~# find / -size +50M > 2>
如果想把"完整"的find命令的输出都重定向到文件中,可以使用下面的命令:
root@ubuntu:~# find / -size +50M > 2>&1