1. 程式人生 > >crontab定時排程shell指令碼

crontab定時排程shell指令碼

本人最近要用crontab做一個定時排程任務,調一個啟動指令碼去執行jar包,並給main方法傳一個日期引數。

Linux系統:CentOS7

輸入:

crontab -e

在裡面編寫:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#分 時 天 月 星期     指令碼路徑
05 15 * * * /bin/sh /data/IPPParser/startup_cyc.sh

意思就是每天下午15:05 去執行startup_cyc.sh這個指令碼。

指令碼的內容: 

#使JAVA_HOME生效
source /root/.bash_profile
#進入專案根路徑
cd /data/IPPParser
#!/bin/sh

if [ -z "$JAVA_HOME" ]; then
echo "Please configure the JAVA_HOME!"
exit
fi

JAVA_OPTION="-Dfile.encoding=UTF-8 -Xmx256M -Xms256M"
#jar包名稱
JAR_NAME=ippparser.jar
#傳的引數
PARSE_DATE=`date -d "yesterday" +%Y%m%d`
#呼叫jar包命令
java $JAVA_OPTION -jar $JAR_NAME $PARSE_DATE

問題彙總:

一.crontab不生效,需要檢查的地方

1.檢查cron狀態

service crond status

 可以看到crontab是active狀態

如果不是這個狀態,說明crontab沒有啟動。

重啟:systemctl restart crond

2.檢查cron是否有呼叫shell命令

可以看到cron在15:05有呼叫指令碼。

3.cron呼叫了命令,但是沒生效(如:手動調指令碼可以執行,但是cron呼叫不行)

看cron郵件: cat /var/spool/mail/root

說明我們的程式已經成功呼叫。如果有錯誤會打印出來。

4.找不到無法載入主類

一般是相對路徑問題,列印一下路徑,檢查是否正確。

5.crontab呼叫時,自己是檢測不到jJAVA_HOME的,需要在腳本里加上 source /root/.bash_profile,這樣才能找到你的JAVA_HOME。