Table of Contents
1 自動アップデートの為のパッケージ
以下の2つのパッケージがあります。
yum-updateonboot 起動時にyum updateを実行 yum-cron 定期的にyum updateを実行
デスクトップ用途で使うならyum-updateonboot、サーバ用途で使うならばyum-cronを使うと良いでしょう。
2 yum-updateonboot
systemdを利用して、起動時にyum updateを自動実行するパッケージです。
yumでyum-updateonbootをインストールし、systemctlで有効にします。
$ sudo yum install -y yum-updateonboot$ sudo systemctl enable yum-updateonboot
次回、起動時にyum updateが自動実行されます。
3 yum-cron
cronとanacronを利用して、定期的にyum updateを実行するパッケージです。
yumでyum-cronをインストールし、systemctlで有効にします。
$ sudo yum install -y yum-cron$ sudo systemctl enable yum-cron$ sudo systemctl start yum-cron
yum-cronは毎時実行する為の0yum-hourly.cronと毎日実行する為の0yum-daily.cronを持ちます。
cron job file config file for yum update /etc/cron.hourly/0yum-hourly.cron /etc/yum/yum-cron-hourly.conf /etc/cron.daily/0yum-daily.cron /etc/yum/yum-cron.conf
デフォルトでは0-yum-hourly.cronは何も実行せず、0-yum-daily.cronはアップデートパッケージのダウンロードのみを実行します。
0yum-daily.cronでアップデートも実行するように変更します。
また0yum-daily.cronの実行が開始されてからyum updateが実行されるまでのランダムな待ち時間を0に変更しています。
これはanacronが0yum-daily.cronを実行するのに、すでにランダムな待ち時間を消費しているためです。
$ diff -uprN /etc/yum/yum-cron.conf{.org,}— /etc/yum/yum-cron.conf.org 2016-05-26 21:01:11.352642602 +0900+++ /etc/yum/yum-cron.conf 2016-05-26 21:01:30.218747972 +0900@@ -17,7 +17,7 @@ download_updates = yes # Whether updates should be applied when they are available. Note # that download_updates must also be yes for the update to be applied.-apply_updates = no+apply_updates = yes # Maximum amout of time to randomly sleep, in minutes. The program # will sleep for a random amount of time between 0 and random_sleep@@ -25,7 +25,7 @@ apply_updates = no # times that multiple systems will access update servers. If # random_sleep is 0 or negative, the program will run immediately. # 6*60 = 360-random_sleep = 360+random_sleep = 0 [emitters]
3.1 実行結果
0anacronからcron.dailyが起動し、cron.dailyから0yum-daily.cronが起動しています。
yum updateに5分程度掛かっています。途中で0yum-hourly.cronが実行されますが、何もせずに終了しています。
May 27 20:01:01 centos-7 CROND[2529]: (root) CMD (run-parts /etc/cron.hourly)May 27 20:01:01 centos-7 run-parts(/etc/cron.hourly)[2529]: starting 0anacronMay 27 20:01:01 centos-7 anacron[2552]: Anacron started on 2016-05-27May 27 20:01:01 centos-7 run-parts(/etc/cron.hourly)[2555]: finished 0anacronMay 27 20:01:01 centos-7 anacron[2552]: Will run job `cron.daily’ in 44 min.May 27 20:01:01 centos-7 anacron[2552]: Will run job `cron.weekly’ in 64 min.May 27 20:01:01 centos-7 anacron[2552]: Will run job `cron.monthly’ in 84 min.May 27 20:01:01 centos-7 anacron[2552]: Jobs will be executed sequentiallyMay 27 20:01:01 centos-7 run-parts(/etc/cron.hourly)[2529]: starting 0yum-hourly.cronMay 27 20:01:14 centos-7 run-parts(/etc/cron.hourly)[2604]: finished 0yum-hourly.cronMay 27 20:45:01 centos-7 anacron[2552]: Job `cron.daily’ startedMay 27 20:45:01 centos-7 run-parts(/etc/cron.daily)[5838]: starting 0yum-daily.cronMay 27 20:51:00 centos-7 run-parts(/etc/cron.daily)[30186]: finished 0yum-daily.cronMay 27 20:51:00 centos-7 run-parts(/etc/cron.daily)[5838]: starting logrotateMay 27 20:51:00 centos-7 run-parts(/etc/cron.daily)[30209]: finished logrotateMay 27 20:51:00 centos-7 run-parts(/etc/cron.daily)[5838]: starting man-db.cronMay 27 20:52:00 centos-7 run-parts(/etc/cron.daily)[5493]: finished man-db.cronMay 27 20:52:00 centos-7 run-parts(/etc/cron.daily)[5838]: starting mlocateMay 27 20:52:08 centos-7 run-parts(/etc/cron.daily)[5513]: finished mlocateMay 27 20:52:08 centos-7 anacron[2552]: Job `cron.daily’ terminated (mailing output)
yum updateのログは以下の通りです。このログはmailボックスにも送られています。
$ cat /var/log/yumMay 27 20:45:49 Updated: java-1.8.0-openjdk-headless.x86_64 1:1.8.0.91-0.b14.el7_2May 27 20:45:50 Updated: java-1.7.0-openjdk-headless.x86_64 1:1.7.0.101-2.6.6.1.el7_2May 27 20:46:02 Updated: tzdata-java.noarch 2016d-1.el7<snip>May 27 20:48:34 Updated: crash.x86_64 7.1.2-3.el7_2.1May 27 20:48:35 Updated: graphite2.x86_64 1.3.6-1.el7_2May 27 20:48:51 Installed: kernel-devel.x86_64 3.10.0-327.18.2.el7
3.2 再起動はサポートされていない
anacronの時間外にrebootを実行するcron jobを登録するしかないです(/etc/anacrontabのSTART_HOURS_RANGEの範囲外の時間)。
デフォルトではSTART_HOURS_RANGEは3-22なので、日曜日の00:00に”shutdown -r 0:10″を実行するcron jobを
以下の様に登録しました。
“shtudown -r now”の代わりに”shutdown -r 0:10″を実行することでcron jobのログが出力されます。
$ sudo crontab -u root -l0 0 * * 0 /usr/sbin/shutdown -r 0:10