在AIX的工作排程管理上,我們經常使用crontab管理排程作業。
這裡遇到一個問題是,若我們希望月結時例行性去執行某一作業應該怎麼做呢?
(月結:是指會計每月最後一天的月底結算)
因為不同的月份會有不同的天數,當碰到2月閏月時也可能出現2月29日。
分享下面程式搭配 crontab job 的設定來處理此問題:
Step1.設定AIX下的crontab Job
AIX 下執行crontab -e (這邊使用範例是AIX 7.1版本)
因為月底有可能是28-31號,故我們讓程式在28-31日時去執行判斷該天是否為月底
再下wq! 存檔離開,再使用crontab -l 確認一下是否有存檔成功。
Step2.設定AIX的Shell Script檔
Shell Script部份如下:
請注意紅色部份請替換成你要執行的作業
#!/usr/bin/ksh
#this script is used to start the xxx in the last day of every month
ym=`date +%m" "%Y`
if [ `date +%d` = `cal $ym|xargs|awk '{print $NF}'` ]
then
/usr/bin/su - sapadm -c "stopsap; startsap" > /dev/null
fi
將你的程式存成 lastdayofmonth.sh 搭配 crontab 路徑去放置,這邊範例是放在 / 下
注意一下權限問題:
Download link > lastdayofmonth.sh
這裡遇到一個問題是,若我們希望月結時例行性去執行某一作業應該怎麼做呢?
(月結:是指會計每月最後一天的月底結算)
因為不同的月份會有不同的天數,當碰到2月閏月時也可能出現2月29日。
分享下面程式搭配 crontab job 的設定來處理此問題:
Step1.設定AIX下的crontab Job
AIX 下執行crontab -e (這邊使用範例是AIX 7.1版本)
因為月底有可能是28-31號,故我們讓程式在28-31日時去執行判斷該天是否為月底
再下wq! 存檔離開,再使用crontab -l 確認一下是否有存檔成功。
Step2.設定AIX的Shell Script檔
Shell Script部份如下:
請注意紅色部份請替換成你要執行的作業
#!/usr/bin/ksh
#this script is used to start the xxx in the last day of every month
ym=`date +%m" "%Y`
if [ `date +%d` = `cal $ym|xargs|awk '{print $NF}'` ]
then
/usr/bin/su - sapadm -c "stopsap; startsap" > /dev/null
fi
將你的程式存成 lastdayofmonth.sh 搭配 crontab 路徑去放置,這邊範例是放在 / 下
注意一下權限問題:
Download link > lastdayofmonth.sh