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.log
crontabではなくコマンドラインで試してみるとうまくいきます。
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
元のメールファイルを表示するには。