cron

ttp://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

■crontab で実行スケジュール設定

  • bash-3.2$ crontab -l

46 14 * * * /pub/home/nicos/bat/BAT_○○.sh
48 13 22 * * /pub/home/nicos/bat/BAT_vp_○○.sh
22 16 22 * * /pub/home/nicos/bat/BAT_vp_○○.sh

EDITOR=vi
export EDITOR
crontab -e

# 10分おき
#*/10 * * * * /pub/home/nicos/bat/○○.sh

# 定期的に削除?
# 06:15 120
15 6 * * * find /pub/home/nicos/bat/log '*.log' -mtime +120 -exec rm {} \; >/dev/null 2>&1

再起動
/etc/rc.d/init.d/crond restart
確認
/etc/rc.d/init.d/crond status
自動起動の確認
chkconfig --list crond


■実行されるシェルファイルでメール制御
パーミッション注意r x

#!/bin/sh
#-----------------------------------------------------------
# ファイル名: BAT_○○.sh
# 処理概要 :
#-----------------------------------------------------------
# PATH
ROOT_PATH="/pub/home/ユーザ"
EXE_PATH="$ROOT_PATH/bat/exe"
LIB_PATH="$ROOT_PATH/bat/lib"
LOG_PATH="$ROOT_PATH/bat/log"
PHP="/usr/local/bin/php -q"
PERL="/usr/bin/perl"

source /home/nicos/.bash_profile
pg_name="BAT_○○.php"

# 現在の日時からログファイル名を生成する
now_h=($(date +%Y%m%d_%H%M))
name="_bat_○○.log"
logfile="$now_h$name"
logcheck_pg_name="ログチェック.pl"

# バッチ実行
$PHP $EXE_PATH/$pg_name $1 >> $LOG_PATH/$logfile 2>&1

# ログチェック、エラーならメール送信
$PERL -I$LIB_PATH $EXE_PATH/$logcheck_pg_name $LOG_PATH/$logfile