其實就是想開發個Windows下系統服務一樣的程式。而查了好久資料,沒找到java如何開發linux的守護進程。用C語言開發感覺太麻煩了,何況還要嵌入業務。使用Servlet的話也行,但是需要額外安裝tomcat。
經過一天實驗,終於發現,原來這麼簡單!
先來段簡單代碼,每隔5秒更新job.log檔案。用來測試一下。
import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Date;public class Program {/** * @param args */public static void main(String[] args) {File f = new File("/home/xieping/job.log");if (!f.exists()) {try {f.createNewFile();} catch (IOException e) {e.printStackTrace();}}while (true) {try {BufferedWriter output = new BufferedWriter(new FileWriter(f));output.write(new Date().toString());output.close();} catch (IOException e1) {e1.printStackTrace();}try {Thread.sleep(1000 * 5);} catch (InterruptedException e) {e.printStackTrace();}}}}
打包,我是用eclipse打包的,匯出個jar包就行了。
把檔案放到/home/xieping/目錄下。檔案名稱 job.jar。
開始設定為守護進程了!!
#java -jar job.jar &
簡單吧,就加一個&符號。可以查看下
#ps aux|grep job
看到了,果然啟動了。
#more /home/xieping/job.log
檔案的時間也一直換。
注意,在開多線程的情況下,進程可能無法終止。
#killall java 或者 #kill 進程ID 無效。需要強制終止。
#kill -9 進程ID。