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

在Ubuntu 上实现 JAR 包的自启动

在 Ubuntu 上实现 JAR 包的自启动,可以通过以下几种方法:

方法一:使用 systemd

  1. 创建一个服务文件
    /etc/systemd/system/ 目录下创建一个新的服务文件,例如 myapp.service

    sudo nano /etc/systemd/system/myapp.service
    

    文件内容可以如下:

    [Unit]
    Description=My Java Application[Service]
    ExecStart=/usr/bin/java -jar /path/to/your/app.jar
    Restart=always
    User=yourusername
    WorkingDirectory=/path/to/your[Install]
    WantedBy=multi-user.target
    

    /path/to/your/app.jar 替换为你的 JAR 包的实际路径。

  2. 重新加载 systemd 配置

    sudo systemctl daemon-reload
    
  3. 启用并启动服务

    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service
    
  4. 检查服务状态

    sudo systemctl status myapp.service
    
  5. 停止和禁用服务
    要停止你创建的服务,可以使用以下命令:

    sudo systemctl stop myapp.service
    

    如果你想禁用服务,使其在系统启动时不再自动启动,可以使用:

    sudo systemctl disable myapp.service
    

这会显示服务的当前状态以及日志信息,帮助你了解它是否正常运行。

方法二:使用 cron(不推荐用于长时间运行的服务)

如果你希望在系统启动时运行你的 JAR 包,可以使用 cron@reboot 选项。

  1. 编辑 crontab

    crontab -e
    
  2. 添加以下行

    @reboot /usr/bin/java -jar /path/to/your/app.jar
    

    保存并退出。

方法三:使用 init.d(旧方法)

虽然现在 systemd 是主流,但你也可以使用 init.d 方法。

  1. 创建一个启动脚本

    sudo nano /etc/init.d/myapp
    

    内容示例:

    #!/bin/sh
    java -jar /path/to/your/app.jar
    
  2. 赋予执行权限

    sudo chmod +x /etc/init.d/myapp
    
  3. 使用 update-rc.d 添加启动项

    sudo update-rc.d myapp defaults
    

注意事项

  • 确保 Java 已安装并且路径正确。
  • 运行 JAR 包的用户应该有权限访问 JAR 文件和所需的资源。
  • 你可以通过日志文件捕获输出,帮助调试启动过程中的问题。

通过上述任一方法,你的 JAR 包就能在 Ubuntu 启动时自启动了。

http://www.lryc.cn/news/479430.html

相关文章:

  • 【智能算法应用】哈里斯鹰算法优化二维栅格路径规划问题
  • 单品年销10亿!看麻辣王子是如何布局软文营销为品牌赋能的?
  • 【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
  • C++:模拟实现STL的string
  • 【Python TensorFlow】入门到精通
  • 数据结构:七种排序及总结
  • 【安当产品应用案例100集】030-使用企业微信登录Windows,实现工作电脑与业务系统登录方式统一
  • 大数据数据存储层MemSQL, HBase与HDFS
  • 【HarmonyOS】鸿蒙应用设置控件通用样式AttributeModifier, @Styles
  • Scala IF...ELSE 语句
  • 快速上手vue3+js+Node.js
  • 06 网络编程基础
  • Python 的 FastApi 如何在request 重复取request.body()
  • qt QFontDialog详解
  • AI时代,通才可能会占据更有利的地位
  • qt QHeaderView详解
  • 探索PickleDB:Python中的轻量级数据存储利器
  • yocto下编译perf失败的解决方法
  • 丹摩征文活动|详解 DAMODEL(丹摩智算)平台:为 AI 开发者量身打造的智算云服务
  • ORACLE _11G_R2_ASM 常用命令
  • 掌握Rust模式匹配:从基础语法到实际应用
  • HFSS 3D Layout中Design setting各个选项的解释
  • 线性表之链表详解
  • C/C++使用AddressSanitizer检测内存错误
  • 【EI和Scopus检索】国际人工智能创新研讨会(IS-AII 2025)
  • 在OceanBase 中,实现自增列的4种方法
  • LWE算法分类及基本加解密算法示例
  • 【论文阅读】Learning dynamic alignment via meta-filter for few-shot learning
  • 蓝牙 SPP 协议详解及 Android 实现
  • 系统学习领域驱动设计-感悟-高尚名词篇