在Ubuntu 上实现 JAR 包的自启动

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

方法一:使用 systemd

  1. 创建一个服务文件

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

    bash 复制代码
    sudo nano /etc/systemd/system/myapp.service

    文件内容可以如下:

    ini 复制代码
    [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 配置

    bash 复制代码
    sudo systemctl daemon-reload
  3. 启用并启动服务

    bash 复制代码
    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service
  4. 检查服务状态

    bash 复制代码
    sudo systemctl status myapp.service
  5. 停止和禁用服务

    要停止你创建的服务,可以使用以下命令:

    bash 复制代码
    sudo systemctl stop myapp.service

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

    bash 复制代码
    sudo systemctl disable myapp.service

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

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

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

  1. 编辑 crontab

    bash 复制代码
    crontab -e
  2. 添加以下行

    bash 复制代码
    @reboot /usr/bin/java -jar /path/to/your/app.jar

    保存并退出。

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

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

  1. 创建一个启动脚本

    bash 复制代码
    sudo nano /etc/init.d/myapp

    内容示例:

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

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

    bash 复制代码
    sudo update-rc.d myapp defaults

注意事项

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

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

相关推荐
工头阿乐15 小时前
使用Conan构建现代C++项目:完整指南
开发语言·c++
master33615 小时前
python 安装pip
开发语言·python·pip
思麟呀15 小时前
C++14概述与三大核心语法改进
开发语言·c++
shushangyun_15 小时前
批发商城系统源码多少钱?2026最新报价一览
java·开发语言·人工智能·spring·spring cloud
影视飓风TIM15 小时前
从C++引用到类封装:底层视角拆解核心语法与面试考点
java·开发语言
江畔柳前堤15 小时前
github实战指南03-Pull Request 全流程实战
开发语言·人工智能·python·深度学习·github·word
森G16 小时前
67、Qt 多媒体框架概述---------多媒体
开发语言·qt
葛兰岱尔16 小时前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
小小晓.16 小时前
零基础C++小白突破
开发语言·c++
何以解忧,唯有..16 小时前
Go语言类型转换详解:从基础到进阶实践
开发语言·后端·golang