web-dev-qa-db-ja.com

シェルスクリプトがcrontabから126の終了コードを返す

Crontabエントリー:

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

OR

 * * * * *  /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
3
HDev007

以前の質問に対する私のコメントで示唆されているように、エラーコード126は、スクリプトまたはその中のコマンドを実行する権限がないことを示しているようです( http://tldp.org/LDP/abs/html/を参照)。 exitcodes.html )。 crontabrootプロセスであるはずなので、これは奇妙です。以下を試してください:

chmod +x /FinalSync.sh

それが役立ちます。そうでない場合、問題はcpコマンドに起因している可能性があります(多分、書き込めない場所に書き込もうとしているのでしょうか?)。また、\cpエイリアスを回避するため(スクリプトを起動したユーザーは常に同じように動作します)。

4
Valentin B.