crontabからファイルへのコマンド出力は機能しません。

crontabからファイルへのコマンド出力は機能しません。

Raspbian Busterを使用してcliにコマンド出力を表示し、それを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.logcrontabではなくコマンドラインで試してみるとうまくいきます。

crontabのバグですか、それとも最初のステートメントに従ってエラーが発生しますか?

助けてください?

ありがとうございます。

答え1

これを使ってsudo crontab -eルートcrontabを編集しました。したがって、コマンドはすでにrootとして実行されているため、ファイル自体sudo内でそれを使用する必要はありません(使用しないでください)。crontab

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

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

ユーザースクリプトをルート(つまり、ユーザーのホームディレクトリにあるスクリプト)として実行するのは良い方法ではありませんが、システムの唯一のユーザーである場合は許可されます。 (これは、通常のユーザーがスクリプトを変更して何でもできることを意味し、ルートがスクリプトを実行して喜んでいるためです。)

エラーが発生した場合、最初に確認する必要があるのはcronエラーを送信したローカル電子メールです。mailあるいは、コマンドを使用することもできますmailx(root crontabから来たのでrootとして)。だまされるless /var/mail/root元のメールファイルを表示するには。

関連情報