公司在某銀行項目中,有這麼一個需求,使用linux或者unix系統中用系統的定時任務調用項目裏的java代碼執行,於是做了如下準備
crontab命令常見於Unix和Linux的操作系統之中,用於設置週期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於"crontab"文件中,以供之後讀取和執行。所以妥妥的使用crontab命令,話不多說,直接硬菜。
一、執行的流程(都需要什麼文件,怎麼執行的)
1、項目需求要執行的任務。(java類man方法,比如每分鐘,每秒鐘,固定時間12點,刷某個字段,或者導出xx等需求或者功能)
2、編寫一個腳本,用來調用 1中的代碼(shell腳本,指定執行命令)
3、linux中配置定時任務,固定時間(1中所規定的時間)調用2中腳本
二、編寫項目要執行的類(做什麼事)
package com.simp.service.person;
import com.simp.property.Debug;
/**
* 指定備機器定時刷新任務
* 加入linux的計劃corntab
* 執行方法:(推薦)/usr/local/java/jdk1.8.0_11/bin/java -Djava.ext.dirs=/usr/local/tomcat/webapps/iam/WEB-INF/lib/ com.simp.service.person.PersonCheck
* 或者:/usr/local/java/jdk1.8.0_11/bin/java -cp /usr/local/tomcat/webapps/iam/WEB-INF/lib/iam.app.5.0.enc.jar:/usr/local/tomcat/webapps/iam/WEB-INF/lib/iam.base.5.0.enc.jar com.simp.service.person.PersonCheck
*
*/
public class PersonCheck{
public static void main(String[] args) {
Debug.info("你要做的任務。。。執行了!!");
}
}
三、編寫執行腳本放在linux中指定位置(自己指定一個位置)
/usr/local/bin/check_person.sh
#!/bin/bash
/usr/local/java/jdk1.8.0_11/bin/java -Djava.ext.dirs=/usr/local/tomcat/webapps/iam/WEB-INF/lib/ com.simp.service.person.PersonCheck
四、linux系統配置定時任務(重點難點)
1、在/etc/crontab下設置,指定用戶名的
2、重啓crontab,使配置生效/etc/init.d/crond restart
ok完成結束
五、crontab擴展
crontab調度是最低是按照分鐘執行的,時間配置如下圖
如果是秒級也不是不可以,因爲我們項目要求比較高,所以進行到秒級,經過一番研究,做成如下了,可以借鑑
目前總結就這些,以後有類似需求就以這個爲標準繼續擴展