Linux下獨(dú)立執(zhí)行Java程序
Linux系統(tǒng)里,很多時(shí)候因?yàn)榉N種原因,需要把java程序單獨(dú)執(zhí)行,而不是在web容器環(huán)境下執(zhí)行,這時(shí)候很多容器資源是無法直接取到的,比如數(shù)據(jù)庫連接池配置的數(shù)據(jù)源等等,還有就是程序運(yùn)行需要的第三方j(luò)ar包。
這種情況下需要設(shè)置環(huán)境變量,比如java路徑,classpath環(huán)境變量等等,對(duì)于數(shù)據(jù)源配置還需要特殊處理,比如數(shù)據(jù)源配置文件、日志配置文件、資源文件加載等問題,舉例說明:
#!/bin/bash tempClassPath=$CLASSPATH; flist=/home/smsdp/SohuMbRegist/lib/*.jar; for i in $flist; do mypath=$i; CLASSPATH=$CLASSPATH:$mypath; done CLASSPATH=$CLASSPATH:$tempClassPath; export CLASSPATH export JAVA_HOME=/usr/local/java cd /home/smsdp/SohuMbRegist/classes nohup $JAVA_HOME/bin/java com.sohu.zxl.ivr.JobService & >/dev/null
上面這段代碼是個(gè)shell腳本文件:
1. 首先,聲明兩個(gè)變量,tempClassPath為當(dāng)前的環(huán)境變量$CLASSPATH,flist 為一個(gè)目錄文件數(shù)組(可以認(rèn)為是一個(gè)數(shù)組);
2. 接下來拼接jar路徑,并賦值給當(dāng)前$CLASSPATH環(huán)境變量;
3. 設(shè)置環(huán)境變量;
4. 進(jìn)入class目錄;
5. 執(zhí)行程序,并輸出到 nohup.out 虛擬文件內(nèi)。
獨(dú)立java程序執(zhí)行完后,線程自動(dòng)銷毀,可以通過命令:ps -ef|grep JobService 查找,程序執(zhí)行時(shí)可以找到線程ID,待執(zhí)行后再查找則找不到該線程。
可以通過定時(shí)job ,crontab 來設(shè)置程序執(zhí)行時(shí)間,頻率..........當(dāng)然也可以在java程序里面控制執(zhí)行時(shí)間頻率,但是通過crontab控制更加靈活,對(duì)于執(zhí)行時(shí)間經(jīng)常變化的,建議通過crontab控制。
【編輯推薦】