-
パッケージのアップデートはセキュリティ ホールなどを塞ぐ為の大切なものです。
ですが、毎回手動で行なうのは少し面倒くさいことも確かです。
サーバの場合、年中稼動していることが多いと思います。
ですから、マシン起動時に[/etc/rc.d/rc.local]を使用して、
自動アップデートを実施する方法は得策ではありません。
今回は、cron という定期的にプログラムを実行してくれるデーモンを使用して
サーバにアクセスが少くなる深夜に、定期的に自動アップデートを実施する方法を記載します。
- 本作業で主に使用するもの
- apt : パッケージ管理ツール。
- crond : 定期的にプログラムを実行する為のデーモン。
- [/var/spool/cron/root] : rootユーザで、プログラムを定期的に実行する為の設定ファイル。
- 以下の作業は、一般ユーザで行うことを前提に記述しています。
- ダウンロードしたファイルは、一般ユーザのデスクトップにしたものとして記述しています。
- ここでは、一般ユーザを"penguin"としています。作業時は適用に読み替えて下さい。
- 以下の作業は、インターネットに接続可能な状態になっていることを前堤に記述しています。
-
以下の作業は、既に aptを導入していることを前提に記述しています。
aptの導入手順は、こちらを参照して下さい。
aptとcronを使用して、定期的に自動アップデート(server編)
| 初版 : | 05.10.31 |
| 更新日 : | 06.09.03 |
| 動作確認 : | CentOS 4.X |
※ 注意
-
プログラムを定期的に自動実行する為には、crondが起動していなくてはいけません。
多分、デフォルトで自動起動に設定されているとは思いますが、一応状態確認をします。
$ su -
Password: rootユーザのパスワードを入力します。
# service crond status
crond (pid XXXX) を実行中...
↑ 上記出力を確認します。
上記のように表示されれば、crondは起動している状態です。("X"には任意の整数が入ります。)
もし上記以外の表示がされた場合は、以下のコマンドで crondの起動と、自動起動の設定を行ないます。
# service crond start
crond を起動中: [ OK ]
↑ 上記出力を確認します。
# chkconfig crond on
-
次に自動実行させたいプログラムを登録します。
# crontab -e
#========================================
# apt Update
#========================================
0 4 * * * /root/cron\ shell/apt.sh >> /var/log/cron
↑ 上記内容を追加します。操作は viと同じです。
# ls -l /var/spool/cron/root
-rw------- 1 root root XXX X月 X XX:XX /var/spool/cron/root
↑ 上記ファイルが存在することを確認します。
# crontab -l
#========================================
# apt Update
#========================================
0 4 * * * /root/cron\ shell/apt.sh >> /var/log/cron
↑ 上記出力を確認します。
[crontab]の記述は【分 時 日 月 曜日 コマンド】という記述形式になっています。
例えば、上記で追記した「0 4 * * * /root/cron\ shell/apt.sh >> /var/log/cron」という部分がありますが、
これは「毎日04時00分にrootユーザで、[/root/cron shell/apt.sh]を実行し、出力を[/var/log/cron]に追記する。」
という意味になります。
-
次にcronで使用するシェルを作製します。
# mkdir /root/cron\ shell
# vi /root/cron\ shell/apt.sh
#!/bin/bash
#========================================
# Shell名 : apt.sh
# 機能 : 日々、パッケージのアップデートを実施する。
# 作成日 : 2006/08/06
# 更新日 : -
#========================================
echo "#========================================";
echo "# apt Update";
echo "#========================================";
apt-get update >> /var/log/cron 2>&1;
apt-get -y dist-upgrade >> /var/log/cron 2>&1;
exit;
↑ 上記内容を追記します。
-
作製した[/root/cron shell/apt.sh]に実行権を与えます。
# chmod 700 /root/cron\ shell/apt.sh
# ls -l /root/cron\ shell/apt.sh
-rwx------ 1 root root XXX X月 X XX:XX /root/cron shell/apt.sh
↑ 上記出力を確認します。
-
また、本作業を行なっている時に初めて知ったのですが、yum もしっかりcron設定されていますね。
ただ、apt と yum を混在して使用するのは避けた方が良いと思うので、以下のコマンドで yum の状態を確認します。
# service yum status
夜間 yum 更新を無効にしました。
↑ 上記出力を確認します。
もし、上記以外のメッセージが表示された場合、下記のコマンドを実行して下さい。
# service yum stop
夜間 yum 更新を無効にする [ OK ]
↑ 上記出力を確認します。
- 以上で、毎日04時00分にパッケージのアップデートが実施されます。
作業内容