crontab中find命令无法找到已存在文件的原因排查请求
问题排查与修复方案
1. 修正find命令的语法错误
你的find命令存在参数错误:-type -f写法有误,正确格式应为-type f——多出来的减号会让find将-f识别为无效的类型参数,直接触发"No such file or directory"错误。修正后的基础命令:
find ~/ -type f -newer starttime_file -a ! -newer endtime_file > listfile.txt
2. 彻底修正文件名拼写错误
你提到代码中存在endtile_file的拼写错误,必须全量替换为endtime_file,只要有一处未修正,find就会因找不到基准时间文件而报错。
3. 解决crontab的路径适配问题
crontab执行任务时的默认工作目录并非你日常登录shell的目录,如果starttime_file和endtime_file使用相对路径创建,crontab根本无法找到它们,这是高频踩坑点:
- 所有涉及文件的操作一律使用绝对路径:比如创建文件时用
touch /home/你的用户名/starttime_file,find命令中也需写成-newer /home/你的用户名/starttime_file - 输出文件
listfile.txt同样要写绝对路径,避免crontab将其生成到系统根目录等非预期位置
4. 严谨检查测试命令的拼写
你测试时用的find ~/ -name "teset200.txt"存在拼写错误(teset应为test),虽然你说能找到文件大概率是手误,但正式脚本中绝对不能出现这类低级错误,否则会导致匹配结果异常。
5. 验证crontab的执行环境
如果问题仍存在,可先确认crontab的工作目录:
* * * * * pwd > /home/你的用户名/cron_pwd.txt && ls -l /home/你的用户名/ >> /home/你的用户名/cron_files.txt
运行1分钟后查看cron_pwd.txt,就能明确crontab的执行目录,确保所有文件路径与该目录适配。
内容的提问来源于stack exchange,提问作者user17712990
相关产品推荐
相关产品推荐

