现象:find命令不可用,执行命令直接提示:No such file or directory,直接没有执行查找命令
查看find命令路径,是否正常:
试试使用绝对路径执行,看看效果,排除环境变量的问题:
还是不行,#find --help和#man find都能正常执行,说明命令还是没问题的,感觉是被alias了,于是# alias 、# cat ~/.bashrc、# cat /etc/bashrc查看相关的别名记录,没有,排除有人恶搞。
猜测1:命令执行需要使用的文件(更多是库文件)被删除,重新安装
# yum whatprovides /usr/bin/find //先看命令提供的rpm包,是findutils# yum reinstall findutils //重新安装# rpm -ql findutils //查看包生成的文件,与正常的进行对比
执行命令,问题依旧........
猜测2:find命令执行过程中,相关系统调用出现异常
# strace find# strace -e trace=file find//查看系统调用及使用的文件
显示的是libc.mo,这个和find相关么?在正常的机器上查看libc.mo,发现是glibc-command提供的,难不成因为find是c语言开发的,造成这样的影响
# yum reinstall glibc-command //直接重装glibc
执行命令,问题依旧......
解决方法:百度,google无果,甚至没有遇到这种现象的,倒是发现了busybox这个好东西
Busybox:被称为关键时刻的救命稻草,在系统命令无法使用时登场,Linux工具中的瑞士×××。
是一个集成了linux基础命令的软件包,甚至http和telnet服务器,大小只有1M左右,广泛使用与嵌入式系统中,看来真是个好东西,有时间可以研究研究。
网上找了busybox的安装方法,android安装也多,感觉需要像内核编译那样麻烦,于是尝试了下yum直接安装,居然成功了。
# yum install busybox //如果安装不成功,尝试先安装epel源
使用:在原来执行的命令前面加上busybox即可表示使用busybox提供的工具(命令),因为find的常用性,直接写入永久别名
# echo “alias find=’busybox find’” >>/etc/bashrc# source /etc/bashrc
测试:
1.执行普通查找:正常
# busybox find /home/filesync/files/ -mtime +300 -name "*zb.ipa"
2.将查找结果进行处理(find后面有专门的执行操作):失败
# find /home/filesync/files/ -mtime +300 -name "*.ipa" -exec rm -rf {} \;# find /home/filesync/files/ -mtime +300 -name "*.ipa" -delete
Busybox的帮助文档中命名有exec的用来执行命令呀,貌似被坑了。Find主要作用就是查找文件,既然查找没问题了,后续操作换用其他方式就可以了:使用管道处理,调用系统命令处理,如下:
# busybox find /home/filesync/files/ -mtime +300 -name "*.ipa"|xargs rm -f