您好,登录后才能下订单哦!
# Linux怎么启动停止重启SpringBoot Jar包
## 前言
在Linux服务器上部署SpringBoot应用时,通常会将项目打包成可执行的Jar文件。掌握Jar包的启动、停止和重启操作是运维的基本技能。本文将详细介绍在Linux环境下管理SpringBoot Jar包的完整流程。
## 一、准备工作
### 1. 确认Java环境
```bash
java -version
确保已安装JDK 1.8或更高版本
使用scp或sftp工具将jar包上传到服务器:
scp your-app.jar user@server:/path/to/deploy
java -jar your-app.jar
此命令会占用当前终端,关闭终端会导致应用停止
nohup java -jar your-app.jar > app.log 2>&1 &
nohup
:防止进程被挂起> app.log
:重定向输出到日志文件2>&1
:将错误输出合并到标准输出&
:后台运行java -jar your-app.jar --spring.config.location=/path/to/application.properties
java -Xms512m -Xmx1024m -jar your-app.jar
# 查找进程ID
ps -ef | grep your-app.jar
# 杀死进程
kill -9 [pid]
kill -15 [pid]
创建stop.sh
文件:
#!/bin/bash
PID=$(ps -ef | grep your-app.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo "Application is already stopped"
else
echo "Stopping application with pid $PID"
kill $PID
fi
赋予执行权限:
chmod +x stop.sh
./stop.sh
sleep 5
nohup java -jar your-app.jar > app.log 2>&1 &
创建restart.sh
文件:
#!/bin/bash
APP_NAME="your-app.jar"
LOG_FILE="app.log"
# 停止现有应用
echo "Stopping $APP_NAME"
PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo "Application is already stopped"
else
kill $PID
echo "Waiting for application to stop..."
sleep 10
fi
# 启动新实例
echo "Starting $APP_NAME"
nohup java -jar $APP_NAME > $LOG_FILE 2>&1 &
# 检查启动状态
sleep 5
NEW_PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{ print $2 }')
if [ -z "$NEW_PID" ]
then
echo "Application failed to start"
else
echo "Application started successfully with pid $NEW_PID"
fi
创建/etc/systemd/system/springboot-app.service
:
[Unit]
Description=SpringBoot Application
After=syslog.target
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /path/to/your-app.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
管理命令:
# 启动服务
systemctl start springboot-app
# 停止服务
systemctl stop springboot-app
# 重启服务
systemctl restart springboot-app
# 查看状态
systemctl status springboot-app
# 开机自启
systemctl enable springboot-app
安装Supervisor:
sudo apt-get install supervisor
配置/etc/supervisor/conf.d/springboot-app.conf
:
[program:springboot-app]
command=java -jar /path/to/your-app.jar
directory=/path/to/
user=appuser
autostart=true
autorestart=true
stderr_logfile=/var/log/springboot-app.err.log
stdout_logfile=/var/log/springboot-app.out.log
管理命令:
# 重新加载配置
sudo supervisorctl reread
sudo supervisorctl update
# 管理应用
sudo supervisorctl start springboot-app
sudo supervisorctl stop springboot-app
sudo supervisorctl restart springboot-app
netstat -tulnp | grep 8080
kill -9 [占用进程的PID]
调整JVM参数:
java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -jar your-app.jar
使用logrotate管理日志,创建/etc/logrotate.d/springboot-app
:
/path/to/app.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
本文介绍了Linux环境下管理SpringBoot Jar包的多种方法,从基础命令到专业的服务管理方案。对于生产环境,推荐使用Systemd或Supervisor进行管理,它们能提供更好的进程监控和自动恢复功能。根据实际需求选择最适合的方案,可以显著提高应用的稳定性和可维护性。 “`
这篇文章包含了约1400字,采用Markdown格式编写,涵盖了SpringBoot Jar包在Linux环境下的启动、停止、重启操作以及进阶管理方案,并提供了常见问题解决方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。