centos systemd 方式设置java开机自启、系统服务
前言工作中经常见到需要将java设置为开机自启通常的思路是将java设置为服务然后纳入systemd管理然后开启开机自启以下是实现步骤编写java服务脚本在/etc/systemd/system下新建my_java.service内容[Unit] DescriptionMy Java Application Service Afternetwork.target [Service] #当服务崩溃时自动重启 Restarton-failure #重启前等待10秒 RestartSec10s ExecStart/opt/my_java/my_java.sh start ExecStop/opt/my_java/my_java.sh stop [Install] WantedBymulti-user.target为了便于维护通常将启动命令单独保存为脚本文件my_java.sh内容#!/bin/sh PNAMEmy_java # 只有root用户才能执行 if [ $(id -u) ! 0 ]; then echo Error: You must be root to run this script; exit 1; fi # 有新jar则先移动到目标目录实际通常是上传到用户主目录下然后执行脚本就行了 if [ -f /home/my_user/${PNAME}*.jar ]; then mv /home/my_user/${PNAME}*.jar /opt/my_java; fi # 找到运行中的java进程id # ps aux 命令可能被截断ps auxww会展示全部 PIDps auxww | grep /usr/local/jdk1.8.0_301/bin/java | grep ${PNAME} | awk {print $2} # 将jar所在路径按照时间排序 JARls -lt /opt/my_java/${PNAME}*.jar | head -1 | awk {print $NF} case ${1} in start) if [ -n ${PID} ]; then echo ${0}: ${PNAME} is already running: ${PID} exit 0 fi # 注意受限于systemd不能读取环境变量所以脚本中的java命令要改为全路径 # 因为service默认是simple类型不能以nohup方式启动 /usr/local/jdk1.8.0_301/bin/java -jar ${JAR} --spring.profiles.activemyProfile 21 1/dev/null ;; stop) if [ -n ${PID} ]; then kill -9 $PID; fi ;; restart) if [ -n ${PID} ]; then kill -9 $PID; fi echo /usr/local/jdk1.8.0_301/bin/java -jar ${JAR} --spring.profiles.activemyProfile 21 1/dev/null| at now ;; status) if [ -n ${PID} ]; then echo ${0}: ${PNAME} is ONLINE${PID}, current jar is ${JAR} exit 0 else echo ${0}: ${PNAME} is OFFLINE, current jar is ${JAR} exit 0 fi ;; *) echo Usage: ${0} { start | stop | status } exit 1 ;; esac exit 0因为service默认类型是simple所以不能以nohup方式启动java可参考linux systemd Failed at step EXEC spawning /some/path/my_sh.sh: Permission denied设置开机自启/禁用设置开机自启systemctl enable my_java禁用开机自启systemctl disable my_java查看服务状态systemctl status my_java如果启动失败查看日志journalctl -u my_java
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2527340.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!