Linux定时任务---运行jar包 (可以解决:手动执行脚本没问题,定时执行不成功,什么错误也没有,就是启动不了)

写一个可以在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

按照以上步骤执行即可完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值