Yum-cronを使用してシステムを自動更新するようにyumを設定したい。しかし、私のインターネット接続は非常に制限されており、利用可能なインターネットのごく一部を更新プロセスが占有して、ネットワーク上のすべての人のコンピューター使用を悲惨なものにしたくありません。
更新を自動的にチェックしてダウンロードするようにyumを設定するにはどうすればよいですか(ただし午前2時から午前6時の間のみ)?
まあ、それが私なら、毎日午前2時に開始するcronジョブ(root
用)を設定します。そのようです:
0 2 * * * /bin/yum -y update
それは [〜#〜] kiss [〜#〜] のようなものです!
ここに短い答えがあります。 rootユーザーとして次のコマンドを実行します。
cat <<HEREDOC > /etc/crontab.d/update-yum.crontab
Shell=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
0 2 * * * yum -y update
HEREDOC
詳細な説明は次のとおりです。
Unixシステムでスケジュールされたジョブを実行するためのユーティリティがいくつかあります。
cron
ユーティリティは、スケジュールされたタスクを実行するための事実上の標準Unixユーティリティです。 cron
の1つの欠点は、システムが何らかの理由でダウンしている場合、タスクが実行されない可能性があることです
anacron
ユーティリティは、ホストシステムが継続的に起動しない可能性があるユースケース用に作成されました。
anacronは、定期的にコマンドスケジューリングを実行するコンピュータープログラムで、従来はcronによって行われていましたが、システムが継続的に稼働しているとは想定されていませんでした。
fcron
ユーティリティは、このような状況を処理するように設計された新しいバージョンです。
fcronは、定期的なコマンドスケジューリングを実行するコンピュータプログラムです[...]。 [fcron]は、システムが継続的に実行されていることを想定しておらず、常時または定期的に実行されていないシステムで実行できます。 Vixie-cronとAnacronを単一の統合プログラムに置き換え、元のCronデーモンにはない多くの機能を提供することを目的としています。
hcron
ユーティリティは、より機能豊富な代替手段です。
hcron[テーブルに何か新しいものをもたらします]いくつかの本当に便利で実用的な方法で。例えば:
- イベントは、1つのファイルにすべてではなく、個別のファイルに個別に保存されます。
- イベントは、単一のファイル内のテーブルとしてではなく、ファイルシステム内で階層的に編成されています
- イベントは名前が付けられ、参照可能です
- イベントは、単一の行に順序付けられた列ではなく、複数のkey = value設定として定義されます
- hcronはシステム指向ではなくネットワーク指向です
- 設定を減らして再利用するためのテンプレートイベントのサポート
- イベントを生成できない場合のフェイルオーバーイベントのサポート
- 設定のサポートと変数の操作
他のバリアントの追加機能が必要ない場合は、cron
が最も簡単です。 cron
の一般的なワークフローは、特定のタスク用のいわゆるcronジョブを作成することです。これは、実行するコマンドと、いつ実行するかを指定するパターンで構成されます。時間パターンの構文は次のとおりです。
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute
Cronデーモンは毎分実行され、すべてのアクティブなcronジョブをチェックして、現在の時刻と一致するパターンがジョブにあるかどうかを確認します。たとえば、ジョブを2:00 AMに実行するには、分の値を0、時間の値を2、日、月、および曜日の値を無制限にする必要があります。これは次のように表されます。
0 2 * * * command
構文は少し慣れるので、cronジョブ式の生成に役立つWebベースのユーティリティを次に示します。
そして、これはあなたが便利だと思うかもしれない別のウェブベースのツールです:
それは逆を行います-それはあなたが時間パターンを入力することを可能にし、それを英語で表示します。
Cronジョブをデプロイする方法はいくつかあります。メインのcrontabファイルと、システムcronジョブ用の/etc/
のサブディレクトリがいくつかあります。
/etc/crontab
/etc/cron.d
/etc/cron.daily
/etc/cron.deny
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
これの詳細については、たとえば、CentOS導入ガイドの関連セクションを参照してください。
最も簡単な方法は、crontabファイルを/etc/crontab.d
ディレクトリに追加することです。
cat <<HEREDOC > /etc/crontab.d/update-yum.crontab
Shell=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
0 2 * * * yum -y update
HEREDOC
ジョブが失敗した場合に通知されるように、MAILTO変数を適切な管理用電子メールアドレスに設定することができます。
また、cronjobsはユーザーとは異なる環境で実行されることにも注意してください。これは一般的な問題であり、フラストレーションの原因です。たとえば、次の投稿を参照してください。