定时任务条目:
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
避免别名(这样无论谁启动脚本,它的行为总是相同)。