crontab 启动java程序

编程入门 行业动态 更新时间:2024-10-09 18:20:00

crontab 启动java<a href=https://www.elefans.com/category/jswz/34/1771429.html style=程序"/>

crontab 启动java程序

最近工作需求,需要在Linux中启动定时任务,每隔2分钟调用一个Java程序,碰到一系列的问题,总结如下

1.crontab定时任务如果指定了结果输出流文件,则要输入 2>&1 才会将结果输出到指定的文件,如

*/2 * * * * /opt/a8box/mb_umdtasker/create_umd.sh >/opt/a8box/mb_umdtasker/out.log 2>&1

如果要将标准流与错误流输出到Linux回收站中,即不显示任何东西,则需要加上 /dev/null 如

*/2 * * * * /opt/a8box/mb_umdtasker/create_umd.sh >/opt/a8box/mb_umdtasker/out.log /dev/null 2>&1

2 在Linux定时器当前目录会产生问题,如果Java工程需要在同级目录下加载一些配置文件(如连接数据库的信息),则当前目录会加载不到,此时,可以在java命令设置当前路径系统属性,程序中根据该属性动态加载配置文件

setsid java -Dbase_dir="/opt/a8box/mb_umdtasker/" -jar /opt/a8box/mb_umdtasker/mb_content_umdtasker.jar

在程序中可以用

String path = System.getProperty("base_dir");

3 Java工程中的log4j日志输出文件一般都是配置在当前目录下,而在Linux定时器中会有问题,即当前目录并不是Java程序所在的目录了,而log4j配置文件又在Java程序源文件中,则可以将log4j.properties提取出来,在Java工程中动态加载

String path = System.getProperty("base_dir");

File log4jfile = new File(path+"/"+"log4j.properties");

if(log4jfile.exists()){

PropertyConfigurator.configure(path+"/"+"log4j.properties");

}

4 手动执行启动Java程序没有问题,Linux定时器启动Java程序会丢失环境变量的配置,需要在shell脚本中加入环境变量

source /etc/profile

setsid java -Dbase_dir="/opt/a8box/mb_umdtasker/" -jar /opt/a8box/mb_umdtasker/mb_content_umdtasker.jar

更多推荐

crontab 启动java程序

本文发布于:2024-02-13 23:13:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760754.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序   crontab   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!