Linux下定时执行JAVA程序

打成JAR包

首先要把写好的JAVA程序封装成JAR包,注意选好主类,然后把该包和及其依赖的第三方jar包都上传到服务器上。
我的程序是每天凌晨定时更新一下数据库中的某价格,jar包在服务器上的路径如下:/usr/java/updatePrice/ModifyPrice.jar。

编写shell脚本

我的本本是windows,所以写shell脚本有些费劲。首先随便新建个文件,然后把后缀名改成.sh。脚本内容如下:

#!/bin/bash  

#导入环境变量
export LANG="en_US.UTF-8"  
export JAVA_HOME=/usr/java/jdk1.7.0_80 
export PATH=$JAVA_HOME/bin:$PATH  
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  echo Hello,world!
UPDATE_HOME=/usr/java/updatePrice
CONFIG=$UPDATE_HOME/configer.properties  
echo Hello,world!
echo "【`date +%Y-%m-%d_%H:%M:%S`】begin updatePrice"  
sed -i "/OVER/ s/=.*/=0/g" $CONFIG  
cd $UPDATE_HOME && echo "进入目录:$UPDATE_HOME"  
java -jar $UPDATE_HOME/TrvaelModifyPrice.jar && echo "excute TrvaelModifyPrice.jar completed!" && sed -i "/OVER/ s/=.*/=1/g" $CONFIG || echo "excute TrvaelModifyPrice.jar failed!"  
echo "【`date +%Y-%m-%d_%H:%M:%S`】completed."  

应该可以很容易看懂个大概的,echo是输出语句,java -jar $UPDATE_HOME/TrvaelModifyPrice.jar这句就是执行jar包的语句。
注意导入环境变量,确保路径正确。
这里注意,跨平台上传要转换文件格式,只改后缀名是没用的,我用的是UltraEdit把文件从DOS转成了UNIX,还有很多方法(请百度),这样上传到Linux的服务器才可以运行。

设置定时器

把编写好的脚本文件上传到服务器之后,在控制台输入 crontab -e 调出定时器的vi界面添加定时启动命令。
36 19 * * * sh /usr/java/updatePrice/modifyPrice.sh >> /usr/java/updatePrice/travelmodifyprice.log
前五个参数,从右向左依次是年、月、日、时、分,上面五个参数的意思是每年每月每天的19点36分执行后面的命令(*号代表每····)。sh是执行sh文件的命令,后面就是文件路径了,>>之后接的是日志路径。
这样程序就会按照自己的意愿执行了。

猜你喜欢

转载自blog.csdn.net/nvnnv/article/details/52355681