Shell 脚本从 crontab 返回 126 退出代码

Shell 脚本从 crontab 返回 126 退出代码

定时任务条目:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * *  /FinalSync.sh $(/bin/date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

或者

 * * * * *  /FinalSync.sh $(date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

两者都尝试过

日志文件中的错误代码为 126

外壳脚本

#! /bin/sh

source=/Source/$1
destination=/Destination
folderParam=$(basename $source)
if /usr/bin/rsync -avh -r $source $destination; then
   cp /FolderCopyStatus/Success   /Status/Success_$folderParam
else
   cp /FolderCopyStatus/Failure   /Status/Failure_$folderParam
fi

ls -l@ilkkachu的结果

-rw-r--r-- 1 root root 299 Oct 17 16:20 /FinalSync.sh

答案1

正如我对您上一个问题的评论中所建议的,错误代码 126 似乎意味着您无权执行脚本或其中的命令(请参阅http://tldp.org/LDP/abs/html/exitcodes.html)。但这很奇怪,因为crontab应该是一个root过程。尝试以下操作:

chmod +x /FinalSync.sh

这可能有帮助。否则,问题可能来自于您的cp命令(也许您正在尝试写入不应该写入的地方?)。还要尽量\cp避免别名(这样无论谁启动脚本,它的行为总是相同)。

相关内容