crontabタスクを使用して単純な「apt-getアップデートとアップグレード」スクリプトをどのように実行できますか?

crontabタスクを使用して単純な「apt-getアップデートとアップグレード」スクリプトをどのように実行できますか?

update.shを次のように作成しました。

#!/bin/bash 
       sudo apt-get update 
       sudo apt-get upgrade
       echo "Updated Successfully!

毎時間このスクリプトを実行するために、次のcrontabジョブを作成しました。

0 * * * *  bash /home/ubuntu/update.sh >> /home/ubuntu/cron_test.txt

しかし、echoコマンドのログファイルエントリのみが生成され(1分ごとに実行しようとするため)、私のbashが更新されているという確認はありません。私はWSL2とVMWare Ubuntu端末の両方でこれを試しました。 WSLはエコー実行エントリも記録しません。何が問題なのでしょうか?

答え1

2つの質問があります。

  1. これはsudo、パスワードの入力を求められ、パスワードは提供されないことを意味します。だからちょうどそこにぶら下がるでしょう。簡単な解決策は、rootを使用するcronか、sudo crontab -erootユーザーにエントリを追加することによって/etc/cron.crontabsudo

  2. aptコマンド自体も、実行時にインストールを確認する必要があることを示すメッセージを表示しますapt upgrade。を実行してこの問題を解決することもできますapt upgrade -y

今、上記の「解決策」のどれも良くありません。代わりに、次のいずれかを使用しないでください。無人アップグレードのインストール、これを行うように設計されたツールを使用できます。

答え2

いくつかの問題に直面しています。どちらもデフォルトでSystemdを実行しているWSLにルーティングしています(または簡単ではありません)。この内容は記事で詳しく説明します。Ubuntuの回答を尋ねるもう一つしたがって、ここではこの問題について深く議論しません。

しかし、Systemdがない場合:

  • unattended-upgradesコメントやその他の回答で提案された機能は機能しません。

  • cron通常、UbuntuでもSystemdによって起動されるため、別の方法で起動する必要があります。あなたの意見に基づいて:

    エコー実行項目も記録しません。

    cron... WSLで予想されるものはまったく実行されていないようです。

ただし、考えられる解決策を提案する前に、WSLインスタンスはこれを行わないでください。 WSL インスタンスは、長期間実行される常時実行環境として設計されていません。ディストリビューションを実行しているDockerコンテナに似ています。だから私は常にバックグラウンドでアップグレードの中断が発生することを心配しています。ホストオペレーティングシステムwsl --shutdown(またはホストオペレーティングシステム)または--terminateさまざまな要因を含むさまざまな要因の1つが、バックグラウンド/無人アップグレード中にWSLインスタンスを停止する可能性があります。

物理/仮想マシンでは、次のunattended-upgrade-shutdownことができます。無人アップグレードが完了するまでシャットダウンを無効にします。。しかし、これはWSLでは不可能です。つまり、Aptデータが破損しやすくなります。

apt upgradeこれはプロセスで実行されたときにも発生しますcron

ただ手動で実行することをお勧めしますsudo apt update && sudo apt upgrade -y。デフォルトのMOTDは必要に応じてある程度警告します。


WSLで実行している場合は、cronいくつかの異なる方法で自動化を達成できます。推奨される方法は、boot.command利用可能な構成設定を持つWindows 11です。

Windows 10を使用している場合は、次の項目に追加できます~/.bashrc

wsl.exe -u root service cron status > /dev/null || wsl.exe -u root service cron start > /dev/null

このwsl.exeコマンドを使用して、パスワードなしでrootとして実行します。

よりこのスーパーユーザーの答えそこで、2つの技術をさらに詳しく説明します。

関連情報