web-dev-qa-db-ja.com

yum自動更新を夜間にのみ実行するようにスケジュールするにはどうすればよいですか?

Yum-cronを使用してシステムを自動更新するようにyumを設定したい。しかし、私のインターネット接続は非常に制限されており、利用可能なインターネットのごく一部を更新プロセスが占有して、ネットワーク上のすべての人のコンピューター使用を悲惨なものにしたくありません。

更新を自動的にチェックしてダウンロードするようにyumを設定するにはどうすればよいですか(ただし午前2時から午前6時の間のみ)?

7

まあ、それが私なら、毎日午前2時に開始するcronジョブ(root用)を設定します。そのようです:

0 2 * * * /bin/yum -y update

それは [〜#〜] kiss [〜#〜] のようなものです!

6
maulinglawns

ここに短い答えがあります。 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はユーザーとは異なる環境で実行されることにも注意してください。これは一般的な問題であり、フラストレーションの原因です。たとえば、次の投稿を参照してください。

4
igal