Linux使用systemctl设置JAVA开机启动

1.编写JAVA启动停止脚本

启动脚本

路径:vi /home/app/start.sh

#!/bin/sh

user=`whoami`
NEEDED_USER=root

APP_NAME=/home/app/springboot-demo-0.0.1-SNAPSHOT.jar

if [ ! -f "${APP_NAME}" ]; then
     echo "${APP_NAME} not found!"
     exit 1
fi

if [ "${user}" == "${NEEDED_USER}" ]; then
     nohup java -jar -XX:MetaspaceSize=6144m -XX:MaxMetaspaceSize=12288m ${APP_NAME} --server.port=80 >> /home/app/logs/80.log 2>&1 &
else
     echo "USER ${NEEDED_USER} please!"
fi

注意:

a.使用全局路径

b.#!/bin/sh必须要加,这一行指明了应该使用什么程序来执行(/bin/sh还是/bin/bash)

c.创建脚本后记得给脚本设置执行权限

chmod +x start.sh

停止脚本

路径:vi /home/app/shutdown.sh

#!/bin/sh

user=`whoami`
NEEDED_USER=root

APP_NAME=/home/app/springboot-demo-0.0.1-SNAPSHOT.jar

if [ ! -f "${APP_NAME}" ]; then
     echo "${APP_NAME} not found!"
     exit 1
fi

if [ "${user}" == "${NEEDED_USER}" ]; then
     ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}' | xargs kill -9
else
     echo "USER ${NEEDED_USER} please!"
fi

注意:

a.使用全局路径

b.#!/bin/sh必须要加,这一行指明了应该使用什么程序来执行(/bin/sh还是/bin/bash)

c.创建脚本后记得给脚本设置执行权限

chmod +x shutdown.sh

重启脚本

路径:vi /home/app/restart.sh

#!/bin/sh

user=`whoami`
NEEDED_USER=root

APP_NAME=/home/app/springboot-demo-0.0.1-SNAPSHOT.jar

if [ ! -f "${APP_NAME}" ]; then
     echo "${APP_NAME} not found!"
     exit 1
fi

if [ "${user}" == "${NEEDED_USER}" ]; then
     ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}' | xargs kill -9
	 nohup java -jar -XX:MetaspaceSize=6144m -XX:MaxMetaspaceSize=12288m ${APP_NAME} --server.port=80 >> /home/app/logs/80.log 2>&1 &
else
     echo "USER ${NEEDED_USER} please!"
fi

注意:

a.使用全局路径

b.#!/bin/sh必须要加,这一行指明了应该使用什么程序来执行(/bin/sh还是/bin/bash)

c.创建脚本后记得给脚本设置执行权限

chmod +x restart.sh

2.编写服务配置

路径:/usr/lib/systemd/system/app.service

[Unit]
Description=website
After=network.target
 
[Service]
Type=forking
ExecStart=/home/app/start.sh
ExecReload=/home/app/restart.sh
ExecStop=/home/app/shutdown.sh
 
[Install]
WantedBy=multi-user.target

注意:

a.使用全局路径

b.创建脚本后记得更新服务

systemctl daemon-reload

3.相关命令

开机启动:systemctl enable app

关闭开机启动:systemctl disable app

启动:systemctl start app

关闭:systemctl stop app

重启:systemctl restart app

查看状态:systemctl status app

修改服务配置重新生效:systemctl daemon-reload

4.常见systemctl错误码

0                命令成功结束
1                通用未知错误
2                误用shell命令
126            命令不可执行
127            没找到命令
128            无效退出参数
128+x        Linux 信号x的严重错误
130            Linux 信号2 的严重错误,即命令通过SIGINT(Ctrl+C)终止

203            缺失脚本执行器标识(备注2)
255            退出状态码越界

备注1

如运行sh脚本报出如下错误:

/bin/sh^M: 坏的解释器: 没有那个文件或目录

是由于在windows下编辑的脚本文件拷贝至linux导致的,windows下编辑文本每一行结尾是\n\r,而Linux下则是\n,

解决方法:

在终端输入sed -i 's/\r$//' daemon.sh

sed -i 's/\r$//' daemon.sh 会把make-all-linux-project.sh中的行尾的\r替换为空白,其中daemon.sh为报错的脚本。

为避免该错误,可以直接在linux新建脚本或者再linux环境下拷贝。

备注2

如果使用systemctl status app命令查看报错状态为203,有两种可能导致这种错误的原因:

(1)没有在脚本命令前添加#!/bin/sh命令行,导致无法识别应该使用哪种解释器来运行当前脚本

(2)没有给脚本文件设置可以执行权限,使用chmod +x XXX.sh来给脚本文件设置可执行权限.

本文对原文做了补充,原文地址如下:
systemd配置开机自启动java脚本_浮生忆梦的博客-CSDN博客

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要让Linux上的Tomcat在开机时自动启动,我们需要遵循以下步骤: 1. 首先,我们需要确保Tomcat已经成功安装在我们的Linux系统上。在确保Tomcat安装成功后,我们可以前往下一步。 2. 接下来,我们需要找到Tomcat的安装目录。一般情况下,Tomcat的安装目录位于/opt/tomcat或/usr/local/tomcat等位置。 3. 当找到Tomcat的安装目录后,我们需要进入bin目录。在bin目录中,我们可以找到一个名为catalina.sh的脚本文件。 4. 编辑catalina.sh文件,将其打开并查找以下内容: ``` # OS specific support. $var _must_ be set to either true or false. cygwin=false ``` 我们需要在这段代码下方添加以下内容: ``` # Start Tomcat on server startup TOMCAT_HOME="路径"(例如:/opt/tomcat) sh $TOMCAT_HOME/bin/startup.sh ``` 5. 保存并关闭catalina.sh文件。 6. 接下来,我们需要将Tomcat设置为系统服务。使用root用户登录系统,然后进入/etc/systemd/system目录。 7. 在该目录下,创建一个名为tomcat.service的文件。可以使用命令`sudo vi tomcat.service`来创建并编辑该文件。 8. 在tomcat.service文件中,输入以下内容: ``` [Unit] Description=Apache Tomcat Web Server After=syslog.target network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh User=root Group=root [Install] WantedBy=multi-user.target ``` 根据实际情况,可能需要更改Environment和ExecStart的路径。 9. 保存并关闭tomcat.service文件。 10. 在终端中执行`sudo systemctl daemon-reload`命令以重新加载系统服务。 11. 最后,你可以运行`sudo systemctl enable tomcat`命令来使Tomcat在开机时自动启动。 完成以上步骤后,Tomcat将会在Linux开机时自动启动。你可以通过运行`sudo systemctl start tomcat`命令来手动启动Tomcat,并通过访问服务器的IP地址和Tomcat的默认端口(一般为8080)来验证Tomcat是否成功启动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值