1. 程式人生 > >linux利用crontab定時執行java程式碼(jar)

linux利用crontab定時執行java程式碼(jar)

這是在上一篇部落格https://blog.csdn.net/huihuiph/article/details/80237562 上新增的功能,這次在linux自動執行檔案轉移和刪除。廢話不多說,直接上程式碼邊分析:

第一步:準備好java程式

這裡不囉嗦,可看上一篇程式碼。儲存好jar,我這是用Xftp來操作。新增一個資料夾用來放jar:


第二步:寫shell指令碼

第一次接觸這個crontab弄了大半天,下面會詳說新手面臨的問題

首先,新建一個.sh字尾的檔案,我是在本地用Notepad建的注意儲存時的編碼格式(linux對應utf-8),百度很多種寫法。我給大家看看我的:


在這穿插一點小知識:

如何配置jdk環境變數,網上很多例如https://jingyan.baidu.com/article/1612d500a71b8fe20e1eee26.html,安裝我不講了,講下配置吧。命令:vi /etc/profile(有Xftp就直接找到後編輯,要去root下編輯不然沒許可權 su下)配置好自己檢查下,echo $JAVA_HOME看看有沒有出來。


第三步:新增crontab任務

這步等你熟練後就超級簡單,就是給系統新增一個定時執行的任務,但第一次配置有點一臉懵逼。首先crontab -e編輯下:


第一次弄的小夥伴下面可能會出現"no crontab for root - using an empty one",我弄了好久但現在告訴你忽視它啦,你第一次弄定時任務裡肯定是空啦,我這個自動就到vi介面,你可以按i進行編輯,我就只是執行這個shell指令碼,意思是每個一分鐘執行一次(按需修改)。*/1****/後邊跟你.sh的路徑,編輯後Esc :wq儲存。


注意,crond服務是linux的內建服務,但它不會開機自動啟動,所以你要啟動,如果你想開機啟動百度下超簡單我這不需要就沒弄,手動啟動crond命令 service crond start,如果出現版本問題顯示redirecting to。。。,你就直接進這個路徑如下:ok啦。


第四步:檢視任務和程式碼執行結果

首先先看指令碼加進crontab裡了沒:crontab -l


檢視定時器日誌:一分鐘執行一次並打印出來


看實際資料夾效果:(截圖時已經54分了忽略)


一分鐘後:


成功!!!!

過程遇到的問題:

1.shell配置環境變數問題,這個問題是超多人卡住的點。對清楚路徑,核實好程式碼正確性

2.新增到crontab任務中但不執行,先考慮是否開啟crond服務,看看環境變數問題,最後手動執行shell指令碼,我剛開始就是手動執行可以,但定時任務不執行,我排除了環境變數問題和程式碼問題後狂百度,百度說在crontab -e時編輯,在路徑前要加/bin/sh/是不可以的,後來檢視日誌後原來根本就沒這路徑,你放哪就寫哪就好。