在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 启动时自启动了。

### Ubuntu 系统 JAR 开机自启失败解决方案 对于Ubuntu系统中的JAR设置为开机自启动时遇到的问题,可以采取如下措施来解决问题: #### 使用Systemd管理服务 为了确保JAR能够成功作为服务运行并在系统重启后自动启动,建议创建一个systemd服务单元文件。这种方法不仅适用于Ubuntu 18.04 LTS及其后续版本,也兼容其他现代Linux发行版。 创建一个新的service文件位于`/etc/systemd/system/myapp.service`位置,其中myapp代表应用程序名称。以下是示例配置[^3]: ```ini [Unit] Description=My Application Service After=syslog.target [Service] User=myuser ExecStart=/usr/bin/java -jar /path/to/application.jar SuccessExitStatus=143 Restart=on-failure RestartSec=10s [Install] WantedBy=multi-user.target ``` 保存上述更改之后执行命令刷新守护进程配置并启用新定义的服务以便于下次引导时激活它: ```bash sudo systemctl daemon-reload sudo systemctl enable myapp.service ``` 如果之前尝试过将应用设为开机启动项却未生效,则可能是因为缺少必要的权限或者是路径指定错误等原因造成的。此时应该仔细核对所使用的用户名以及绝对路径是否正确无误;另外还需确认Java环境变量已正确定义,可以通过输入`java -version`测试当前终端下能否正常调用到Java解释器[^4]。 当一切准备就绪以后就可以试着重新加载systemctl配置再试一次看看效果如何了: ```bash sudo systemctl start myapp.service ``` #### 验证日志输出 假如依旧无法顺利开启的话,那么就需要借助journalctl工具查看具体的报错信息帮助定位具体原因所在之处: ```bash journalctl -u myapp.service --since "20 min ago" ``` 以上指令会显示最近二十分钟内产生的所有关于这个特定服务的日志条目,有助于快速锁定问题根源所在的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值