现象find命令不可用,执行命令直接提示:No such file or directory,直接没有执行查找命令

wKiom1dTs7vjAQ5BAAAUAG4c174359.png-wh_50

查看find命令路径,是否正常:

wKioL1dTtOagiMRaAAAVWHlCvvM345.png-wh_50

试试使用绝对路径执行,看看效果,排除环境变量的问题:

wKioL1dTtQOwAPkrAAALCFruJK0850.png-wh_50

还是不行,#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       //查看包生成的文件,与正常的进行对比

执行命令,问题依旧........

 

猜测2find命令执行过程中,相关系统调用出现异常

# strace find
# strace -e trace=file find//查看系统调用及使用的文件

wKiom1dTtB7SiE1cAAB18rzh_P0934.png-wh_50 

显示的是libc.mo,这个和find相关么?在正常的机器上查看libc.mo,发现是glibc-command提供的,难不成因为findc语言开发的,造成这样的影响

# yum reinstall glibc-command   //直接重装glibc

执行命令,问题依旧......

 

 

解决方法:百度,google无果,甚至没有遇到这种现象的,倒是发现了busybox这个好东西


Busybox被称为关键时刻的救命稻草,在系统命令无法使用时登场,Linux工具中的瑞士×××。

是一个集成了linux基础命令的软件包,甚至httptelnet服务器,大小只有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

 wKioL1dTtUTRDwUsAAAq1RJ6jfA078.png-wh_50

Busybox的帮助文档中命名有exec的用来执行命令呀,貌似被坑了。Find主要作用就是查找文件,既然查找没问题了,后续操作换用其他方式就可以了:使用管道处理,调用系统命令处理,如下:

# busybox find /home/filesync/files/ -mtime +300 -name "*.ipa"|xargs rm -f