业务需求:设置定时任务,定时运行jar包并输出console的日志到指定的文件中。
系统:CentOS7.4
Java版本:OpenJDK8U-jdk_x64_linux_openj9_linuxXL_8u282b08_openj9-0.24.0
定时任务:crontab
1.Jar程序及目录详情:
/usr/localapp/DataTransfer
2.Jar运行脚本
?需要创建一个run.sh脚本文件来运行jar文件,内容大致是
# !/bin/sh
# Author: Andy
# Updated: 2021.12.21
# Description:
export JAVA_HOME=/usr/local/java/jdk8u282-b08
export PATH=$JAVA_HOME/bin:$PATH
cd $HOME
java -jar -Xshareclasses:none /usr/localapp/DataTransfer/DataTransfer.jar >> /usr/localapp/DataTransfer/log/`date +%Y%m%d`.log &
echo $! > /var/run/DataTransfer.pid
echo DataTransfer started.
参数说明:
-Xshareclasses:none? 当安装linuxXL的OpenJDK不加该参数时会在jar包同目录生成一个存放共享java类文件的?javasharedresources?目录。用java编写的软件执行时jvm都可能会生成这个目录。执行java时加上 -Xshareclasses:cacheDir=/path/to/other/dir 参数可以指定到其他目录,加上 -Xshareclasses:none可以完全禁止这个特性。
>> 后面是日志输出保存的文件目录 。
`date +%Y%m%d` 是当前日期格式化成20210101的变量。
echo $! > /var/run/DataTransfer.pid 将运行时的进行pid保存到指定的文件。
3.定时任务crontab
crontab -e 进入编辑定时任务的界面
# 每小时整点执行脚本
0 */1 * * * /usr/localapp/DataTransfer/run.sh
|