シェルスクリプト(sh)がcronで動かない場合の注意点

CentOS

夜間にサーバ内のファイルのバックアップをさせようとシェルスクリプトをcronで動かしていましたが、サーバを変更したときに動かなくなったことがあるので覚書です

現象

・シェルスクリプト単体では正常に動作
・cronのログでも正常に起動している(/var/log/cron)
・なのに望むように動作していない

シェルスクリプト単体では正常に動作しているので原因はcronで起動させた際に何かが起こっていると絞れます

cronの記述は

シェルスクリプトが稼動したログは取得するようにしていましたが、シェルスクリプト自体は動いていないし、ログも残ってないし・・・という状態でした

原因

でも動いていないということはエラーログが残らないとおかしいなと思い調べなおしました。
cronでのログ出力はコマンドの後ろに >> をつければ吐き出してくれるものと思っていたら覚え違いで、エラーを出力したいならば 2>> としなければいけなかったのです

cronの記述を変更しました

これで記録されたエラーログをみてみると

cronでシェルスクリプトを動かす場合は、シェルスクリプト自体に実行権限を付与しないと動きません
PHPファイルとかは問題ないのにな・・・

これで正常に稼動させることができます