- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

はじめに Edit

cronで定期的にスクリプトを回しましょうという話。

ここの方法で紹介している短所 Edit

このバッチ的に実行するスクリプトを書いてみて思ったのですが一度の定期実行でログを1つのメールで送るため見やすいという利点がありますが、短所として

  • 途中でエラー起きると必要な残りのバッチが実行されない
  • スクリプト1つ1つのエラーごとにメールが来ない
    (cronはエラーあると登録したスクリプト毎にエラーメール送ってくれるけど、それが効かない)

どうみてもアホか!!という欠点があるので、普通にスクリプトを一個一個登録したほうがいいという話があります。

  • 一度に見やすくログを送信したいなら、別のソフトで送ったほうが良いと思う
  • 環境が変わったときにcronの登録が面倒という話なら、スクリプトで自動化した方がいい気がする。(ふつうにシェルスクリプトとか、chefとか、wheneverとか)

dailyスクリプト Edit

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に登録する方法 Edit

上記スクリプトをcronに登録して、毎日自動実行させて見ましょう。

crontabに登録する方法 Edit

sudo crontab -e 

して、以下を書き込みます。

0   4  *   *   *      /bin/sh /usr/local/sbin/daily >/dev/null 2>&1

この例では、毎日朝、4時に、
/usr/local/sbin/daily のスクリプトが走ります。

/etc/cron.daily/ 以下に書き込んでcronに登録する方法 Edit

この方法だと標準出力へ出力されたものも(しかも文字化けして)メールが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 で個別に時間指定をすればよいと思います。




Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-12-22 Wed 08:01:14 JST (2344d)