cronで定期的にスクリプトを回しましょうという話。
dailyなスクリプト。
/usr/local/sbin/daily なるファイルを適当に作成。
例えば、以下のように書きます。
※メールを送るときにJISにするためnkfを使っています。インストール方法は../基本的なソフトを入れるを参考にしてください。
#!/bin/sh log='/var/log/daily.out' # tmp file logs='/var/log/daily.log' # logs # entrust to logrotate #rm -f $log >/dev/null 2>&1 /bin/sh /usr/local/sbin/sync_datetime 2>&1 | tee -a $log /bin/sh /usr/local/sbin/check_system 2>&1 | tee -a $log /bin/sh /usr/local/sbin/dump_system 2>&1 | tee -a $log #/bin/sh /usr/local/sbin/home_backup 2>&1 | tee -a $log /bin/sh /usr/local/sbin/home-backup-pdumpfs 2>&1 | tee -a $log /bin/sh /usr/local/sbin/auto_upgrade 2>&1 | tee -a $log cat $log | nkf --jis | mail -s "[cron-log][`/bin/hostname`]daily script" root # added to logs file cat $log >> $logs
この例では、
などが必要です。
毎日、システムチェック結果と、バックアップ結果を、メールでrootに送っています。
管理するマシンが一台くらいだとまだいいけど。
複数あるときは、見ていられないので、別の方法を考えないといけないと思います。
rootへのメールは、.forwardにでも自分のメールアドレスを書いて、転送設定しておきます。
上記スクリプトをcronに登録して、毎日自動実行させて見ましょう。
sudo crontab -e
して、以下を書き込みます。
0 4 * * * /bin/sh /usr/local/sbin/daily >/dev/null 2>&1
この例では、毎日朝、4時に、
/usr/local/sbin/daily のスクリプトが走ります。
この方法だと標準出力へ出力されたものも(しかも文字化けして)メールが2重に届くようです orz
というわけで上記のcrontabに追記する方法を推奨。
(一応残しておきます)
crontab に書き込まず、/etc/cron.daily/ に作ったスクリプトへのリンクを張る、という手もあります。
例:
sudo ln -s /usr/local/sbin/daily /etc/cron.daily/0my_daily
ファイル名を 0からにしたのは /etc/cron.daily/logrotate (つまりログのローテート処理)より先に実行させるためです。
これをすると、/etc/crontabで設定した時間で自動で実行されます。
今見ると 毎日 6:25 に実行するようになっています。
この時間がいやならば、下記の記事のように crontab で個別に時間指定をすればよいと思います。