一、java-jar启动
直接用java命令启动:
java -jar springboot-app.jar
问题是关闭终端,程序就会终止
二、nohup启动
nohup java -jar springboot-app.jar &
这种方式关闭终端后程序不会被中断。
三、systemd服务启动
上面两种方式如果服务器重启了,或者程序崩溃了,那么后台就挂了。
那如何实现后台挂了,或者服务器重启了,我们的程序依然能恢复执行呢?
那就要依赖systemd服务。
1、创建一个service文件
比如叫Demo.service,内容如下:
[Unit]
Description=Demo App
After=network.target
[Service]
User=root
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ExecStart=/usr/lib/jvm/java-17-openjdk-amd64/bin/java -jar /root/spring-roject/Demo-1.0.jar
Restart=always
[Install]
WantedBy=multi-user.target
上面的Description可以随便命名,主要需要修改的是ExecStart,需要指向springboot编译后的jar文件路径。
Restart代表崩溃后自动重启。
2、将Demo.service文件放到/etc/systemd/system/目录
放到目录下后,执行启动命令
3、systemd启动这个service
# 重载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable Demo
# 立即启动服务
sudo systemctl start Demo
# 检查状态和日志
sudo systemctl status Demo
journalctl -u Demo -f # 实时查看日志
这里需要修改的是后面的文件名Demo就是上一步中创建的service文件的文件名,不需要加service后缀。