启动的脚本
以下代码来源于另一位博主,在实践过程中需要设置定时任务,所以遇到一些问题,把没有写清楚的地方优化了一下。
#!/bin/bash
#这里可替换为你自己的执行程序,再更改启动方法的部分代码,其它地方无需更改
APP_NAME=manage.jar
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 脚本名.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
}
#启动方法,这里更改自己的启动命令,java和APP_NAME需要指定自己的绝对路径,后面重定向的日志路径可以自己定义
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup /data/software/jdk1.8.0_221/bin/java -jar /data/www/$APP_NAME > /dev/null 2>> /data/www/logs/manage.log &
date_time=`date +"%Y%m%d%H%M%S"`
echo $date_time+"${APP_NAME} start success"
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
脚本运行的命令
我们把上面的脚本复制到以下目录的脚本文件/data/www/shtools/startmanage.sh,执行命令可以得到不同的结果。
进入脚本目录
/data/www/shtools/startmanage.sh
3.1查看状态 bash startmanage.sh status
结果示例:manage.jar is running. Pid is 12841
3.2启动 bash startmanage.sh start
结果示例:manage.jar is already running. pid=12841 .-----------表示进程存在
20230707191016+manage.jar start success -----------------------表示启动成功
3.3停止 bash startmanage.sh stop
3.4重新启动 bash startmanage.sh restart
结果示例:20230707191154+manage.jar start success
设置定时任务
设置的三个定时任务运行脚本,
第一个是0 3 * * * bash /data/www/logtools/startplan-manage.sh restart >>/data/www/logs/restart.log是每天3点重启服务,
第两个是每分钟检查服务挂没挂,挂了就自动启动。
[root@localhost logtools]# crontab -l
0 3 * * * bash /data/www/shtools/startmanage.sh restart >>/data/www/logs/restart.log
* * * * * bash /data/www/shtools/startmanage.sh start 2>>/data/www/logs/start.log
注意事项
nohup的启动命令必须要使用绝对路径的java和绝对路径的jar包,不然手动执行脚本会成功,但是定时任务执行会报错java命令找不到。
定时任务执行脚本中脚本的输出需要重定向到自己指定的文件,不然无法看到shell脚本输出了什么,所以在定时任务的执行命令后面有重定向。
nohup /data/software/jdk1.8.0_221/bin/java -jar /data/www/$APP_NAME > /dev/null 2>> /data/www/logs/manage.log &表示标准输出不输出,错误输出到日志文件manage.log中。文章来源:https://www.toymoban.com/news/detail-728888.html
最上面的脚本需要改动的是两个地方,第一个是APP_NAME,第二个是启动方法那里的绝对路径。文章来源地址https://www.toymoban.com/news/detail-728888.html
到了这里,关于在linux上启动、重启、查询、停止java服务脚本,并且设置定时任务自动执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!