Linux怎么启动停止重启springboot jar包

发布时间:2021-08-11 10:42:17 作者:chen
来源:亿速云 阅读:250
# Linux怎么启动停止重启SpringBoot Jar包

## 前言

在Linux服务器上部署SpringBoot应用时,通常会将项目打包成可执行的Jar文件。掌握Jar包的启动、停止和重启操作是运维的基本技能。本文将详细介绍在Linux环境下管理SpringBoot Jar包的完整流程。

## 一、准备工作

### 1. 确认Java环境
```bash
java -version

确保已安装JDK 1.8或更高版本

2. 上传Jar包

使用scp或sftp工具将jar包上传到服务器:

scp your-app.jar user@server:/path/to/deploy

二、启动SpringBoot Jar包

1. 基础启动命令

java -jar your-app.jar

此命令会占用当前终端,关闭终端会导致应用停止

2. 后台运行模式

nohup java -jar your-app.jar > app.log 2>&1 &

3. 带配置文件启动

java -jar your-app.jar --spring.config.location=/path/to/application.properties

4. 指定JVM参数

java -Xms512m -Xmx1024m -jar your-app.jar

三、停止SpringBoot应用

1. 通过进程ID停止

# 查找进程ID
ps -ef | grep your-app.jar

# 杀死进程
kill -9 [pid]

2. 使用优雅停机(需要应用支持)

kill -15 [pid]

3. 编写停止脚本

创建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

四、重启SpringBoot应用

1. 简单重启流程

./stop.sh
sleep 5
nohup java -jar your-app.jar > app.log 2>&1 &

2. 完整重启脚本

创建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

五、进阶管理方案

1. 使用Systemd服务(推荐)

创建/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

2. 使用Supervisor进程管理

安装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

六、常见问题解决

1. 端口占用问题

netstat -tulnp | grep 8080
kill -9 [占用进程的PID]

2. 内存溢出处理

调整JVM参数:

java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -jar your-app.jar

3. 日志文件过大

使用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环境下的启动、停止、重启操作以及进阶管理方案,并提供了常见问题解决方法。

推荐阅读:
  1. SpringBoot项目有哪几种启动方式?
  2. Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux spring spring boot

上一篇:Linux正则表达式与文件格式化处理

下一篇:Android中视频采集的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》