centos

nohup在CentOS中如何实现进程自动重启

小樊
48
2025-08-10 17:46:30
栏目: 智能运维

在CentOS中,要实现使用nohup启动的进程在意外终止后自动重启,可以使用systemd服务来实现。以下是具体步骤:

  1. 创建一个新的systemd服务文件:

    使用文本编辑器创建一个新的服务文件,例如/etc/systemd/system/my_service.service。将my_service替换为你的实际服务名称。

    sudo vi /etc/systemd/system/my_service.service
    
  2. 编辑服务文件:

    在新创建的服务文件中,添加以下内容:

    [Unit]
    Description=My custom service
    After=network.target
    
    [Service]
    Type=simple
    User=<your_user>
    WorkingDirectory=/path/to/your/working/directory
    ExecStart=/usr/bin/nohup /path/to/your/script.sh > /path/to/your/logfile.log 2>&1 &
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    

    请根据实际情况替换<your_user>/path/to/your/working/directory/path/to/your/script.sh/path/to/your/logfile.log

    • Description:服务的描述。
    • After:指定服务启动的顺序。
    • User:以哪个用户身份运行服务。
    • WorkingDirectory:服务的工作目录。
    • ExecStart:启动服务的命令。这里我们使用nohup来运行脚本,并将输出重定向到日志文件。
    • Restart:设置服务在意外终止时自动重启。
    • RestartSec:设置服务重启前的等待时间。
    • WantedBy:设置服务在哪个目标级别启动。
  3. 重新加载systemd配置:

    保存并关闭服务文件后,运行以下命令重新加载systemd配置:

    sudo systemctl daemon-reload
    
  4. 启动服务:

    使用以下命令启动新创建的服务:

    sudo systemctl start my_service
    
  5. 设置服务开机自启:

    如果希望服务在系统启动时自动运行,可以使用以下命令设置开机自启:

    sudo systemctl enable my_service
    

现在,你的服务将在意外终止后自动重启。你可以使用systemctl status my_service命令查看服务状态。

0
看了该问题的人还看了