一日の特定の時間に実行する必要があるバックアップスクリプトがあるので、そのタスクを使用しており、cron
cronからバックアップスクリプトの出力を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
使用されるためサポートされていないため機能します。sh
bash
&>>
sh
M2
SHELL=/bin/bash
ファイルを追加してデフォルトのシェルを変更しますcrontab -e
。