写一个可以在Linux中执行jar的脚本。如下:
#!/bin/bash
#name:jar包启动脚本;
#date:2019-12-09;
#author:Zhongqiu;
#下面这两个解决 crontab 的环境变量跟普通用户的环境变量不一样
. /root/.bash_profile
. /etc/profile
#此处修改脚本名称:
APP_NAME=electricity-main-1.0-SNAPSHOT.jar
#脚本菜单项
usage() {
echo “Usage: sh /electricity/test.sh [start|stop|restart|status]”
exit 1
}
is_exist(){
pid=ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'
#如果不存在返回1,存在返回0
if [ -z “${pid}” ]; then
return 1
else
return 0
fi
}
#启动脚本
start(){
is_exist
if [
?
−
e
q
"
0
"
]
;
t
h
e
n
e
c
h
o
"
? -eq "0" ]; then echo "
?−eq"0"];thenecho"{APP_NAME} is already running. pid=KaTeX parse error: Expected 'EOF', got '#' at position 16: {pid} ." else #̲此处注意修改jar和log文件…APP_NAME >system.log 2>&1 &
#此处打印log日志:
tail -f /electricity/system.log
fi
}
#停止脚本
stop(){
is_exist
if [ $? -eq “0” ]; then
kill -9
p
i
d
e
l
s
e
e
c
h
o
"
pid else echo "
pidelseecho"{APP_NAME} is not running"
fi
}
#显示当前jar运行状态
status(){
is_exist
if [
?
−
e
q
"
0
"
]
;
t
h
e
n
e
c
h
o
"
? -eq "0" ]; then echo "
?−eq"0"];thenecho"{APP_NAME} is running. Pid is
p
i
d
"
e
l
s
e
e
c
h
o
"
{pid}" else echo "
pid"elseecho"{APP_NAME} is NOT running."
fi
}
#重启脚本
restart(){
stop
start
}
case “$1” in
“start”)
start
;;
“stop”)
stop
;;
“status”)
status
;;
“restart”)
restart
;;
*)
usage
;;
esac
上面是需要你自己创建的脚本,首先要用touch 命令创建文件,然后vim将上面内容赋值到你创建的文件中,上面的文件名及jar名称换成你自己的就可以了。保存退出: wq,不保存退出: q!。
在使用sh 文件名 start,执行一下成功即可。
接下来用定时任务执行:
vi /etc/crontab
在最下面编辑:
1 12 * * * 用户名 cd /electricity && ./脚本文件名 start
含义就是每天十二点一分执行你的脚本。按照我上面这么写不会出问题,要不一堆问题。
重启cron服务:
service crond restart
按照以上步骤执行即可完成。