crontab のファイルへのコマンド出力が機能しない

crontab のファイルへのコマンド出力が機能しない

CLI でコマンドの出力を表示し、それを Raspbian Buster を搭載した Raspberry Pi 4 上のファイルにリダイレクトする際に問題が発生します。

私が開始sudo crontab -e

これらは私の基本的な声明です:

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose > /var/log/ufw-status.log

最初の部分は機能しますが、2 番目の部分は書き込み時の権限エラーのため機能しませんufw-status.log。エラー メッセージ:-bash: /var/log/blockips.log: Keine Berechtigung

そこで私はいくつかのスレッドを読んで、これを試しました:

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose | sudo tee /var/log/ufw-status.log

それは機能しません。数日経ってもファイルは変更されません。ただし、sudo ufw status verbose | sudo tee /var/log/ufw-status.logコマンド ライン (crontab ではない) でのみ試すと機能します。

エラーは crontab にありますか、それともエラーは最初のステートメントに依存しますか?

手伝ってもらえますか?

ありがとう。

答え1

ルート crontab を編集する を使用しました。結果として、コマンドはすでにルートとして実行されているため、ファイル自体の中で はsudo crontab -e必要なく、使用すべきではありません。sudocrontab

したがって、crontabコマンドは次のように簡略化できます。

0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log

ユーザー スクリプト (つまり、ユーザーのホーム ディレクトリにあるスクリプト) を root として実行するのは良い習慣ではありませんが、マシン上の唯一のユーザーであれば許容されます。(その理由は、一般ユーザーがスクリプトを変更して何でも実行でき、root がそれを喜んで実行してくれるからです。)

エラーが発生した場合、まずcronエラーが送信されるローカルメールを確認してください。mailまたはmailxコマンド(ルートcrontabからなのでルートとして)を使用するか、浮気less /var/mail/root生のメールファイルを見るだけです。

関連情報