find命令printf参数在crontab中正确格式是什么?执行后输出为空
crontab执行find命令输出为空的解决方法
问题原因
- crontab内置规则中
%是特殊保留字符,会被默认解析为换行符,未转义的%会导致命令截断无法正常执行 - crontab默认环境变量PATH非常精简,可能找不到
find命令的执行路径
正确写法
你可以先在终端执行which find确认find的绝对路径,常见路径为/usr/bin/find,以下为crontab任务行参考写法(开头的时间规则可根据你的定时需求自行调整):
最简推荐写法(去掉冗余的echo $(),直接重定向find输出)
* * * * * /usr/bin/find /tmp -type f -printf "\%p||\%s||||||" > /share/Public/serwer/test33.data
保留原有echo写法的修正版
如果一定要保留原有写法,转义后如下:
* * * * * echo $(/usr/bin/find /tmp -type f -printf "\%p||\%s||||||") > /share/Public/serwer/test33.data
额外排查建议
- 提前确认
/share/Public/serwer/目录存在,且crontab执行用户对该目录拥有读写权限 - 若仍有问题,可在命令末尾追加错误日志输出排查根因:
* * * * * /usr/bin/find /tmp -type f -printf "\%p||\%s||||||" > /share/Public/serwer/test33.data 2>> /tmp/find_cron_error.log
内容的提问来源于stack exchange,提问作者Sławomir Kudła
相关产品推荐
相关产品推荐

