1. 程式人生 > >linux下小程式部署

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