linux下小程式部署
1、應用場景
使用java project寫了一個小程式,需要部署在linux下自動定時執行
java工程目錄:
linux下部署的結構
2、shell指令碼
#!/bin/bash BIN_PATH=/usr/local/work/timertask EXE_NAMe=com.hu.demo.MonthSettle #RUN_NAME=run_monthsettle.sh CLASSPATH=$CLASSPATH:.:${BIN_PATH}/ for file in ${BIN_PATH}/lib/*; do CLASSPATH=${CLASSPATH}:$file; done export CLASSPATH echo $CLASSPATH if [ -z $1 ] then abc=`date -d last-month "+%Y-%m"` else abc=$1 fi if [-z $2] then carrier_code='' else carrier_code=$2 fi echo $abc echo $carrier_code /usr/java/jre/bin/java $EXE_NAMe $abc $carrier_code
(1) PATH環境變數。作用是指定命令搜尋路徑,在shell下面執行命令時,它會到PATH變數所指定的路徑中查詢看是否能找到相應的命令程式。我們需要把 jdk安裝目錄下的bin目錄增加到現有的PATH變數中,bin目錄中包含經常要用到的可執行檔案如javac/java/javadoc等待,設定好 PATH變數後,就可以在任何目錄下執行javac/java等工具了。
(2)CLASSPATH環境變數。作用是指定類搜尋路徑,要使用已經編寫好的類,前提當然是能夠找到它們了,JVM就是通過CLASSPTH來尋找類的。我們 需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設定到CLASSPATH中,當然,當前目錄“.”也必須加入到該變數中。
(3)JAVA_HOME環境變數。它指向jdk的安裝目錄,Eclipse/NetBeans/Tomcat等軟體就是通過搜尋JAVA_HOME變數來找到並使用安裝好的jdk
$PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變數的值。
在shell中一般用環境變數CLASSPATH定義,你可以直接指定jar,也可以指定目錄,jdk1.5以後可以指定目錄時自動尋找所有的jar和zip,其中export命令用於設定環境變數,將變數匯出為全域性變數。
所以如果沒有這一句則shell指令碼只能與class包放在同一個路徑下,不然無法執行。
3、配置對應的linux下的crontab 定時任務
(1)、crontab -e 編輯crontab,crontab -l 檢視crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed #*/8 * * * * /usr/local/work/collection/run.sh >> /usr/local/work/collection/log.log