質問: cron内からファイルに出力をリダイレクトする方法は? 私は1日の特定の時間に実行する必要があるバックアップスクリプトがあるので、このタスクにcronを使用しており、cron内からバックアップスクリプトの出力をlogfile。crontab -e*/1 * * * * /home/ranveer/backup.sh &>> /home/ranveer/backup.log 上記のcronエントリでは、両方のstderr and stdoutをログファイルにリダイレクトしています。上記のcronジョブはsyslogに従って正常に実行され、backup.shファイルに記載されているタスクを実行しますが、ログファイルには何も書き込みません。/var/log/syslogoct 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内からファイルにリダイレクトされないのでしょうか。
回答: 私は問題を解決しました。 2つの方法があります。m1リダイレクトを&>>から2>&1に変更します。したがって、crontab -eは次のようになります*/1 * * * * /home/ranveer/vimbackup.sh >> /home/ranveer/vimbackup.log 2>&1 私は信じます上記は機能します。デフォルトではcronはshではなくbashを使用してタスクを実行するため、&>>はサポートされていません。 shによる。m2shell=/bin/bashファイルにcrontab -eを追加して、デフォルトのシェルを変更します。