私はLinuxを初めて使用しており、Raspberry Piのアップデート/アップグレードスクリプトを自動化したいと思います。これで、1分ごとに実行するように設定され、実行内容を記録していることを確認できます。後でX回ごとに実行するようにします。しかし、何も記録せず、out.logファイルも生成しません。
私が取ったステップ:
crontab -e
#I used the following line
01 * * * * root apt-get update -y && apt-get upgrade -y > /home/cronbin/out.log
次に保存します。
CTRL + X
Y
ENTER
無人アップグレードとこの記事について読みました(apt-get のアップグレードは、crontab ジョブを通じてインストールおよびアップグレードされません。)も興味深かったが、Linuxを学んだり使用したりしているので、私が何が間違っているのか、それをどのように機能させるかを調べるためにこの質問をすることにしました。
答え1
apt
通常、ルートアクセスが必要なので、root crontab
代わりにuser crontab
RPiに配置する必要があります。sudo
user crontab
PIただし、これは他の多くのディストリビューションでは機能しない可能性があります。これは良い習慣ではありません。
代わりに、以下を使用してください。
sudo crontab -e
これは編集用に開き、root crontab
次のように入力できます。このコマンドは毎日午後12時に実行され、apt-get update
すべてのapt-get upgrade
結果がファイルに書き込まれます/home/pi/upgrade_results.log
。
* 12 * * * apt-get update && sudo apt-get -y upgrade >> /home/pi/upgrade_results.log 2>&1
man apt-get
システムに関する最新情報と、このコマンドの使用に関するすべての重要な詳細を再確認してください。通常、ユーザーにメッセージを表示しないため、
-y
オプションは必要ありません。update
>>
リダイレクト追加最新の実行結果のみが必要な場合は、ログファイルに出力してください。追加次にリダイレクト書くリダイレクト:>
リダイレクトは、通常の
2>&1
(stdout
)1
出力とすべてのstderr
(2
)エラーメッセージを組み合わせます。これは、対話型シェルのコマンドラインからこれらのコマンドを実行した場合に端末から取得できる出力と同じです。よりクローンタップマスタースケジュールを整理するのに役立ちます。
このタスクをテストするときは、cron
1分間隔で実行しないでください。許可されていません両方のコマンドを実行して、完了するのに十分な時間を許可します。 IOW、あなたはこのコマンドを実行しています「お互いの上」潜在的に有害な影響を与えます。テスト目的でこのコマンドを繰り返し実行する必要があると思われる場合は、まずコマンドを「手動で」実行してから、ジョブまたはオプションを使用する必要があります-s
。ジョブが実行中であることが確認されたら、コマンドからまたはオプションを削除する必要があります。--dry-run
cron
cron
-s
--dry-run
apt-get
upgrade
使用すると、大量の出力を生成できます。追加リダイレクト>>
- 時間の経過とともにログファイルが非常に大きくなる可能性があります。定期的に確認して、ファイルを直接クリーンアップまたは削除する必要があります。ログサイズを制限する場合自動的に、そのlogrotate
コマンドまたはcron
ログファイルを一時的な場所にパイプする他のタスクを検討し、tail
-c
tmp文書。
答え2
crontab -e
ユーザーとしてサブシェルからアップグレードを実行できますroot
。重要
このように:
1 * * * * (/usr/bin/apt-get update;/usr/bin/apt-get dist-upgrade -y) >> /home/cronbin/out.log 2>&1
2>&1
すべてのエラーを出力に渡します。
/var/log/cron.log
/home/cronbin/out.logにどのoutoutが追加されるか(ログを入れる方が良いと思いますが)
また、時間をcrontab -e
指定しなかった後も次のようになります。user
01 * * * * root
^^^^
/etc/cron.*/
フォルダ内のスクリプトでのみユーザーを指定します。
答え3
コマンドを使用してレコードをcrontab -e
編集するには、次の行を使用する必要があります。cron
1 * * * * apt-get update -y && apt-get upgrade -y > /home/cronbin/out.log
プライベートロギングを使用するときは、cron
ユーザー名(ルート)PSを追加しないでください。毎回再生成するのではなく、ログファイルに出力を追加することをお勧めします。これを取り替えて下さい:
> /home/cronbin/out.log
これで:
>> /home/cronbin/out.log
また、アップデートの実行に時間がかかることがあるため、1分ごとに実行するのは賢明ではありません。複数のapt
プロセスがあります。合理的なアプローチは、24時間ごとにアップデート/アップグレードを実行することです。