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 |