使用脚本启动jar包并传入参数

需要提前在相应服务器上安装jdk。

#!/bin/sh
# 项目所在路径
APP_HOME=/sams/productdata
# 程序入口  这个类在项目中的路径
APP_MAINCLASS=com.cebbank.sams.batch.resource.SamsObtainProductData
# 日志
DATA_LOG=/sams/productdata/script/date_message.log

export SFTP_HOST=**.1.32.**
export SFTP_PORT=20000
export SFTP_USERNAME=******
export SFTP_PWD=******
export SEC_FILE=/sams/backup/sams_db/sftp.sh  # 源文件
export DES_TFILE=/data/123456/sftp.sh  # 目标文件
export LOG_PATH=/data/123456/date_message.log  # 日志文件也要上传

# 拼凑完整的classpath参数,包括指定lib下所有jar
CLASSPATH=$APP_HOME/config
for i in "$APP_HOME"/lib/*.jar  # 加载jar包
do
	CLASSPATH="$CLASSPATH":"$i"
done

JAVA_OPTS="-ms1024m -mx1024m -Xmn1024m -Djava.awt.headless=true -XX:Metaspacesize=512m"

echo -n "Starting $APP_MAINCLASS ...">>$DATA_LOG
echo $CLASSPATH>>$DATA_LOG

echo 开始时间:`date +"%Y-%m-%d %H:%M:%S"`>>$DATA_LOG
java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS $SFTP_HOST $SFTP_PORT $SFTP_USERNAME $SFTP_PWD $SEC_FILE $DES_TFILE >>$DATA_LOG 2>&1
ret_value=$?
echo 结束时间:`date +"%Y-%m-%d %H:%M:%S"`>>$DATA_LOG
echo 执行结果: $ret_value>>$DATA_LOG

if [ "$ret_value" -eq "O" ];then
	echo 执行成功>>$DATA_LOG
else
	echo 执行失败>>$DATA_LOG
fi
# curl 是用命令的方式实现的上传
curl -u $SFTP_USERNAME:$SFTP_PWD --ftp-create-dirs -T "{${DATA_LOG}}" "Sftp://${SFTP_HOST}:${SFTP_PORT}${DATA_LOG}" >>$DATA_LOG 2>&1
echo "日志上传成功... ">>$DATA_LOG

说明:程序入口对应一个java类,这个类中的内容参考如下:
【实用技巧篇】JSch使用介绍,实用JSch实现文件传输
实现了服务器之间免密 文件传输 功能。

你可能感兴趣的:(jar,java,linux)