cron(ジョブの自動実行)の設定を纏めよう。

cron(ジョブの自動実行)の設定を纏めよう。

VPS上で定期的に実行している処理を纏めてみる。
だいぶ前のエントリーで、あとでやると言っていたので定期ジョブ(cron)のあたりを整理してみるよ!。

cronを編集するには「crontab -e」で編集を行う。
その前に、使用するエディターを指定したい場合は、「export EDITOR=vi」とかやって、EDITOR環境変数に使用するエディターを設定する。

crontabの#から始まる行はコメント行。
日時の部分とか、タイミングとかを忘れることが多いのでコメントとして残しとく。
(何故「分」から始めるのだろう。。逆って分かりにくいよ)
あと、cronの中で%を使用している場合はコマンドの終わりとして認識されてしまうらしいんで「¥(バックスラッシュ)」でエスケープする必要があるよ!

 

cronに現在登録しているジョブ

  •  週間バックアップ
  •  MySQL最適化
  •  Apacheのログアナライズ
  •  1分間隔で実行(テスト用)※①コメントアウト

※①
cronはその日時にならないと実行されないので、間違っていないか確認するために
1分間隔で実行するように設定して、ここで試してうまく行ってたら本登録するようにしている。

「crontab -e」で編集モードで開く。現状何が登録されているのかを見る場合は「crontab -l」で見れるよ。

# m h  dom mon dow   command
#書式
#
# 0~59までの整数
# 0~23までの整数
# 1~31までの整数
# 1~12までの整数
# 0~7までの整数 (0,7 : 日曜~6:土曜日)
# 実行するコマンド,シェルスクリプトなど。
#--------------------------------------------------------
#(日次例) 23時45分に毎日実行
#45 23 * * *
#(週次例) 月曜日の9時と12時に実行 (複数の値を指定しているので,","で9時と12時を区切。
#0 9,12  * * 1
#(2時間毎) 2時間毎にジョブを実行 (2分,2時間などと設定する場合は,"*/2"のように設定します。
#0 */2  * * *
#--------------------------------------------------------
#1日〜7日までの日曜日(%w=0)の3時に実行:第1日曜日
0 3 1-7 * * test $(date +\%w) -eq 0 && /hogeHM/hoge/tools/weekly-BKUP.sh week-1
#8日〜14日までの日曜日(%w=0)の3時に実行:第2日曜日
0 3 8-14 * * test $(date +\%w) -eq 0 && /hogeHM/hoge/tools/weekly-BKUP.sh week-2
#15日〜21日までの日曜日(%w=0)の3時に実行:第3日曜日
0 3 15-21 * * test $(date +\%w) -eq 0 && /hogeHM/hoge/tools/weekly-BKUP.sh week-3
#22日〜28日までの日曜日(%w=0)の3時に実行:第4日曜日
0 3 22-28 * * test $(date +\%w) -eq 0 && /hogeHM/hoge/tools/weekly-BKUP.sh week-4
#29日〜31日までの日曜日(%w=0)の3時に実行:第5日曜日
0 3 29-31 * * test $(date +\%w) -eq 0 && /hogeHM/hoge/tools/weekly-BKUP.sh week-5
#Apache Log Analize [visitors][awstats]
0 */6 * * * /hogeHM/hoge/tools/apache_log_analize.sh
#Webalizer
#0 */6 * * * webalizer
#MySQL最適化:12時間おきに実行
0 */12 * * * mysqlcheck -c -r WPDB -uroot -phogePWD
 
#1分間隔で実行(テスト用)
#*/1 * * * * [ $(date +\%w) -eq 6 ] && echo "CronRunTEST"

cronで実行されてるシェル(その1)
保存先ディレクトリを引数にして、バックアップを行う。

weekly-BKUP.sh

#!/bin/bash
#---------------------------------------------------------
# バックアップシェル
#
# perm1:格納先ディレクトリ
#      ex) 
#       第1周目なら /hogeHM/bkup/week-1
#       第2周目なら /hogeHM/bkup/week-2
#       第3周目なら /hogeHM/bkup/week-3
#       第4周目なら /hogeHM/bkup/week-4
#
#---------------------------------------------------------
#
 
#入力パラメータチェック1
if [ -z "$1" ]
then
	echo "格納先ディレクトリを指定して!"
	echo "ex) "
       echo "第1周目なら /hogeHM/bkup/week-1"
       echo "第2周目なら /hogeHM/bkup/week-2"
       echo "第3周目なら /hogeHM/bkup/week-3"
       echo "第4周目なら /hogeHM/bkup/week-4"
       echo ""
       echo "ディレクトリが存在しない場合は自動的に作成しちゃうよ!"
	exit
fi
#-------------------------------
# ディレクトリ作成
#-------------------------------
mkdir -p $1
#-------------------------------
# hogeHMディレクトリバックアップ
# ※「/hogeHM/bkup」は対象外とする
#-------------------------------
tar czf $1/hogeHM.tar.gz /hogeHM --exclude /hogeHM/bkup
#-------------------------------
# 設定ファイルバックアップ
#-------------------------------
tar czf $1/etc.tar.gz /etc
tar czf $1/var.tar.gz /var
#-------------------------------
# パッケージリストバックアップ
#-------------------------------
dpkg -l>$1/dpkg_list.txt
#-------------------------------
# Wordpressデータベースバックアップ
#-------------------------------
mysqldump -Q --opt WPDB -u root --password=hogePWD --opt>$1/WP_DB_BK.sql
#--------------------------------------------------
# 取得したバックアップをSVNにコミットする
#--------------------------------------------------

 

cronで実行されてるシェル(その2)
アパッチのログを解析する
実行するのは「visitors」と「awstats」というアナライザー2つ

apache_log_analize.sh

#!/bin/bash
#####
echo -------------visitors START----------------
zcat /var/log/apache2/access.log.*.gz > /var/log/apache2/access_all.log
cat /var/log/apache2/access.log.1 >> /var/log/apache2/access_all.log
cat /var/log/apache2/access.log >> /var/log/apache2/access_all.log
visitors  -A  -m 60 -o html -T -P http://www.hogeSite.com /var/log/apache2/access_all.log > /hogeHM/hoge/public_html/report.html
visitors /var/log/apache2/access_all.log --prefix http://www.hogeSite.com -V/hogeHM/hoge/public_html/report.dot
dot -Tpng /hogeHM/hoge/public_html/report.dot > /hogeHM/hoge/public_html/report.png
 
echo -------------awstats START----------------
/usr/lib/cgi-bin/awstats.pl awstats -config=/etc/awstats/awstats.conf -update
echo http://www.hogeSite.com/cgi-bin/awstats.pl

おまけ
リストファイル(bkuplist.lst)を読み込んでファイルの存在チェックを行うシェル

bkupFileChk.sh

#!/bin/csh
 
set lst=`cat /hogeHM/hoge/tools/bkuplist.lst`
 
foreach str ($lst)
 
  if (-e "$str") then
    if(-z "$str") then
        echo "File Size ZERO >> $str"
    endif
    ls -lah $str | awk 'begin{}{printf "%s\t%s\t%s\t%s\n",$5, $6, $7, $8}end{}'
  else
    echo "FileCheck >>>>>> $str" "Find NG"
  endif
end

入力リスト
bkuplist.lst

/hogeHM/bkup/week-1/dpkg_list.txt
/hogeHM/bkup/week-1/etc.tar.gz
/hogeHM/bkup/week-1/hogeHM.tar.gz
/hogeHM/bkup/week-1/var.tar.gz
/hogeHM/bkup/week-1/wordpress_DB_BK.sql
/hogeHM/bkup/week-2/dpkg_list.txt
/hogeHM/bkup/week-2/etc.tar.gz
/hogeHM/bkup/week-2/hogeHM.tar.gz
/hogeHM/bkup/week-2/var.tar.gz
/hogeHM/bkup/week-2/wordpress_DB_BK.sql
/hogeHM/bkup/week-3/dpkg_list.txt
/hogeHM/bkup/week-3/etc.tar.gz
/hogeHM/bkup/week-3/hogeHM.tar.gz
/hogeHM/bkup/week-3/var.tar.gz
/hogeHM/bkup/week-3/wordpress_DB_BK.sql
/hogeHM/bkup/week-4/dpkg_list.txt
/hogeHM/bkup/week-4/etc.tar.gz
/hogeHM/bkup/week-4/hogeHM.tar.gz
/hogeHM/bkup/week-4/var.tar.gz
/hogeHM/bkup/week-4/wordpress_DB_BK.sql

実行結果

39K	2011-06-26	15:25	/hogeHM/bkup/week-1/dpkg_list.txt
541K	2011-06-26	15:25	/hogeHM/bkup/week-1/etc.tar.gz
27M	2011-06-26	15:25	/hogeHM/bkup/week-1/hogeHM.tar.gz
232M	2011-06-26	15:25	/hogeHM/bkup/week-1/var.tar.gz
11M	2011-06-26	15:25	/hogeHM/bkup/week-1/wordpress_DB_BK.sql
39K	2011-07-03	13:09	/hogeHM/bkup/week-2/dpkg_list.txt
541K	2011-07-03	13:08	/hogeHM/bkup/week-2/etc.tar.gz
462M	2011-07-03	13:08	/hogeHM/bkup/week-2/hogeHM.tar.gz
265M	2011-07-03	13:09	/hogeHM/bkup/week-2/var.tar.gz
4.4M	2011-07-03	13:09	/hogeHM/bkup/week-2/wordpress_DB_BK.sql
FileCheck >>>>>> /hogeHM/bkup/week-3/dpkg_list.txt Find NG
FileCheck >>>>>> /hogeHM/bkup/week-3/etc.tar.gz Find NG
FileCheck >>>>>> /hogeHM/bkup/week-3/hogeHM.tar.gz Find NG
FileCheck >>>>>> /hogeHM/bkup/week-3/var.tar.gz Find NG
FileCheck >>>>>> /hogeHM/bkup/week-3/wordpress_DB_BK.sql Find NG
39K	2011-07-23	16:16	/hogeHM/bkup/week-4/dpkg_list.txt
542K	2011-07-23	16:15	/hogeHM/bkup/week-4/etc.tar.gz
773M	2011-07-23	16:15	/hogeHM/bkup/week-4/hogeHM.tar.gz
283M	2011-07-23	16:16	/hogeHM/bkup/week-4/var.tar.gz
8.9M	2011-07-23	16:16	/hogeHM/bkup/week-4/wordpress_DB_BK.sql
 

さくらインターネットvpsの設定(Debian)カテゴリの最新記事