cronからファイルに出力をリダイレクトする方法は?

cronからファイルに出力をリダイレクトする方法は?

一日の特定の時間に実行する必要があるバックアップスクリプトがあるので、そのタスクを使用しており、croncronからバックアップスクリプトの出力をlogfile

crontab -e

*/1 * * * * /home/ranveer/backup.sh &>> /home/ranveer/backup.log

上記のcronエントリの両方がstderr and stdoutログファイルにリダイレクトされます。

上記のcronジョブは正常に実行され、syslog ファイルに記載されている操作を実行しますbackup.shが、ログファイルには何も書きません。

/var/log/syslog

Oct 19 20:26:01 ranveer CRON[15214]: (ranveer) CMD (/home/ranveer/backup.sh &>> /home/ranveer/backup.log)

cliでスクリプトを実行すると、必要に応じて動作し、出力をログファイルに書き込みます。

ranveer@ranveer:~$ ./backup.sh &>> backup.log 
ranveer@ranveer:~$ cat backup.log
Fri Oct 19 20:28:01 IST 2012
successfully copied testdir
test.txt successfully copied
-------------------------------------------------------------------------------------
ranveer@ranveer:~$ 

それでは、ファイル出力がcronからファイルにリダイレクトされないのはなぜですか?

ベストアンサー1

この問題を解決しました。 2つの方法があります。

M1

リダイレクトをからに変更&>>します2>&1。これで、crontab -e次のようになります。

*/1 * * * * /home/ranveer/vimbackup.sh >> /home/ranveer/vimbackup.log 2>&1

私は信じる上記の方法は、デフォルトでは実行ジョブが代わりにcron使用されるためサポートされていないため機能します。shbash&>>sh

M2

SHELL=/bin/bashファイルを追加してデフォルトのシェルを変更しますcrontab -e

おすすめ記事