Skip to content

useApplication 重启程序(保持一直运行状态)

目标

确保 useApplication 在意外停止后能够自动重启,提高服务的可用性和稳定性。

环境

  • 操作系统:Ubuntu 22.04 (jetson)
  • 应用程序:useApplication
  • 安装路径:/home/nvidia/install/APP

步骤

1. 创建 systemd 服务文件

  1. 打开终端

  2. 创建服务文件

    bash
    sudo gedit /etc/systemd/system/useapp.service
  3. 编辑服务文件,输入以下内容:

    ini
    [Unit]
    Description=UserAPP Service
    After=network.target
    
    [Service]
    User=nvidia
    WorkingDirectory=/home/nvidia/install/APP
    Environment=LD_LIBRARY_PATH=/home/nvidia/install/APP:$LD_LIBRARY_PATH
    ExecStart=/home/nvidia/install/APP/useApplication
    Restart=always # 设置服务在任何情况下都重新启动
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target

    解释

    • [Unit]:服务的基本信息。
      • Description:服务的描述。
      • After:确保服务在网络服务启动之后再启动。
    • [Service]:服务的具体配置。
      • User:运行服务的用户。
      • WorkingDirectory:服务的工作目录。
      • Environment:设置环境变量 LD_LIBRARY_PATH
      • ExecStart:启动服务的命令。
      • Restart:设置服务在任何情况下都重新启动。
      • RestartSec:服务重启前的等待时间(秒)。
    • [Install]:安装配置。
      • WantedBy:服务在多用户模式下启动。
  4. 保存并关闭编辑器(按 Ctrl+X,然后按 Y,最后按 Enter)。

2. 重新加载 systemd 配置

  1. 重新加载 systemd 配置
    bash
    sudo systemctl daemon-reload

3. 启用并启动服务

  1. 启用服务(确保服务在系统启动时自动启动):

    bash
    sudo systemctl enable useapp.service
  2. 启动服务

    bash
    sudo systemctl start useapp.service

4. 检查服务状态

  1. 检查服务状态

    bash
    sudo systemctl status useapp.service

    预期输出

    • 服务应显示为 active (running)
    • 如果服务未启动,查看错误信息并进行相应调整。

5. 查看日志

  1. 查看 systemd 日志,以了解服务启动和重启的详细信息:

    bash
    sudo journalctl -u useapp.service --since "10 minutes ago"

    解释

    • --since "10 minutes ago":只显示最近10分钟的日志。
    • 查看日志中的错误信息,以确定服务启动失败的原因。

6. 手动测试

  1. 手动终止 useApplication 进程

    bash
    sudo kill $(pgrep useApplication)
  2. 等待几秒钟,然后检查进程是否重新启动:

    bash
    ps -aux | grep useApplication

    预期输出

    • 应能看到 useApplication 进程重新启动。

© 2025 技术博客. All rights reserved by 老周有AI