当前位置: 首页 > article >正文

重启ubuntu服务器,如何让springboot服务自动运行

文章目录

      • 1. 使用 `systemd` 服务
        • 步骤:
      • 2. 使用 `cron` 的 `@reboot` 任务
        • 步骤:
      • 3. 使用 `init.d` 脚本(适用于较旧版本)
        • 步骤:
      • 推荐方案

为了确保在重启Ubuntu服务器后,让springboot的服务test.jar象 nohup java -jar test.jar &命令能自动运行,可以考虑使用几种不同的方法来实现这个目标。以下是几种常见的解决方案:

1. 使用 systemd 服务

创建一个 systemd 服务是最推荐的方法之一,因为它提供了更好的进程管理和控制。

步骤:
  1. 创建服务文件:在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 test.service
  2. 编辑服务文件:使用你喜欢的文本编辑器(如 nanovim)编辑该文件,并添加以下内容:
[Unit]
Description=Test Java Application
After=network.target

[Service]
User=your_username
ExecStart=/usr/bin/java -jar /path/to/test.jar
Restart=always
StandardOutput=append:/var/log/test.log
StandardError=append:/var/log/test.err

[Install]
WantedBy=multi-user.target
  • your_username 替换为运行Java应用程序的用户。
  • /path/to/test.jar 替换为你的JAR文件的实际路径。
  • StandardOutputStandardError 可选配置项,用于指定标准输出和错误日志文件的位置。
  1. 重载 systemd 配置:使新创建的服务文件生效。
sudo systemctl daemon-reload
  1. 启动并启用服务:启动服务并在系统启动时自动启用它。
sudo systemctl start test.service
sudo systemctl enable test.service
  1. 检查服务状态:确认服务是否正在运行。
sudo systemctl status test.service

2. 使用 cron@reboot 任务

这种方法简单但功能有限,适合不需要复杂管理的场景。

步骤:
  1. 编辑 crontab 文件
crontab -e
  1. 添加 @reboot 任务:在文件末尾添加如下行:
@reboot nohup /usr/bin/java -jar /path/to/test.jar > /dev/null 2>&1 &
  • 确保将 /usr/bin/java/path/to/test.jar 替换为正确的路径。
  • > /dev/null 2>&1 表示将标准输出和标准错误重定向到空设备,以避免产生不必要的日志文件。

3. 使用 init.d 脚本(适用于较旧版本)

虽然现代Linux发行版更倾向于使用 systemd,但如果你使用的是较旧版本的Ubuntu,可以考虑创建一个 init.d 脚本。

步骤:
  1. 创建脚本文件:在 /etc/init.d/ 目录下创建一个脚本文件,例如 test
  2. 编写脚本:添加启动、停止和重启逻辑。
  3. 设置权限:给脚本执行权限。
chmod +x /etc/init.d/test
  1. 注册脚本:使用 update-rc.d 注册脚本。
sudo update-rc.d test defaults

推荐方案

对于现代Ubuntu系统,强烈建议使用 systemd 服务,因为它是官方支持的方式,提供了丰富的特性和更好的进程管理能力。此外,systemd 服务能够处理崩溃后的自动重启、日志管理等功能,使得应用更加稳定可靠。


http://www.kler.cn/a/463729.html

相关文章:

  • Java 数据库连接 - Sqlite
  • (二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?
  • 【2024年-12月-11日-开源社区openEuler实践记录】深度探秘 libkperf:解锁系统性能剖析的开源宝藏
  • 解决 ffmpeg “Unknown encoder ‘hevc_nvenc‘“
  • 自学记录鸿蒙API 13:实现多目标识别Object Detection
  • OpenNJet v3.2.0正式发布!
  • 【SQL Server】教材数据库(1)
  • Javascript数据结构常见题目(一)
  • Harmony OS 开发-ArkUI框架速成一
  • 【深度学习】多目标融合算法—样本Loss提权
  • 2024 年发布的 Android AI 手机都有什么功能?
  • springboot529基于JavaWeb的本科生交流培养管理平台的设计与实现(论文+源码)_kaic
  • C++:Windows 多线程 简单示例
  • Ubuntu 24.04安装和使用WPS 2019
  • 2412d,d语言中写汇编
  • 机器学习 LightGBM 算法原理解析
  • QT---------GUI程序设计基础
  • Linux下Shell编程之sed命令详解及示例
  • C#语言的字符串处理
  • 上位机开发 的算法与数据结构
  • ƒ () { [native code] } 的解释
  • Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
  • c#枚举和结构体类型详解
  • 【2024年-6月-28日-开源社区openEuler实践记录】探索 easy - software:简化软件部署与管理的开源方案
  • Ubuntu如何安装jdk并切换到不同的jdk版本
  • 【gopher的java学习笔记】mybatis的mapper是什么