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

重启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.lryc.cn/news/512556.html

相关文章:

  • python系列教程237——启动扩展功能
  • U盘格式化工具合集:6个免费的U盘格式化工具
  • 循环神经网络(RNN)入门指南:从原理到实践
  • 马原复习笔记
  • Android Room 框架的初步使用
  • 什么是过度拟合和欠拟合?
  • DotnetSpider实现网络爬虫
  • 锐捷WLAN产品出货量排名第一!
  • win32汇编环境下,对话框程序中生成listview列表控件,点击标题栏自动排序的示例
  • 自动化文档处理:Azure AI Document Intelligence
  • 【Maven】Maven打包机制详解
  • Python 向量检索库Faiss使用
  • pd.Timestamp接收的参数类型
  • FOC控制原理-ADC采样时机
  • 运行python程序报错 undefined symbol: ffi_type_uint32 的参考解决方法
  • 怎么使用阿里的docker国产镜像源
  • cloudns二级免费域名python更新ipv6 dns记录
  • nginx中try_files $uri $uri index.html的作用 和 $uri的含义
  • 高转化的Facebook广告文案的秘诀
  • CentOS修改docker镜像存储位置并进行数据迁移
  • ES7+ React/Redux/GraphQL/React-Native snippets 使用指南
  • 【ARM】PK51关于内存模式的解析与区别
  • Linux高级--2.4.5 靠协议头保证传输的 MAC/IP/TCP/UDP---协议帧格式
  • 【每日学点鸿蒙知识】输入法按压效果、web组件回弹、H5回退问题、Flex限制两行、密码输入自定义样式
  • 制造BOM的应用思考
  • 嵌入式硬件杂谈(八)电源的“纹波”到底是什么?
  • 保姆级教程Docker部署ClickHouse镜像
  • 【Rust自学】7.3. 路径(Path)Pt.2:访问父级模块、pub关键字在结构体和枚举类型上的使用
  • 【前端,TypeScript】TypeScript速成(七):数组与函数式编程相结合
  • 第十六届蓝桥杯模拟赛(第一期)(C语言)