商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何通过nohup命令实现进程的自动重启

如何通过nohup命令实现进程的自动重启

  发布于2026-06-16 阅读(0)

扫一扫,手机访问

nohup 命令本身的特点,就是让进程在用户退出登录后依然能继续运行——但注意,它并不内置自动重启功能。换句话说,进程一旦意外退出,它就真的“退”了,不会自己回来。那么,想让进程挂了之后自动复活,该怎么办?常见的有两种思路:一种是靠脚本里的 while 循环自己兜底,另一种是借助专业的进程管理工具 supervisord 来监控和重启。下面分别展开。

如何通过nohup命令实现进程的自动重启

方法一:用 while 循环实现简单重启

这种方法最直接,不需要额外安装任何工具。核心思路是:写一个 Shell 脚本,里面套一个死循环,每次用 nohup 启动目标进程,然后等它结束;一旦结束,就自动重启,中间可以加个短暂的休眠。

来看一个示例脚本:

#!/bin/bash
# 要运行的命令
COMMAND="your_command_here"

# 无限循环
while true; do
    # 使用 nohup 运行命令,并将输出重定向到文件
    nohup $COMMAND > output.log 2>&1 &
    # 获取刚刚启动的进程的 PID
    PID=$!
    # 等待进程结束
    wait $PID
    # 输出提示信息
    echo "Process $PID exited with status $? - restarting"
    # 等待一段时间(例如 5 秒)再重新启动
    sleep 5
done

把这个脚本保存为 restart_on_exit.sh,然后 chmod +x restart_on_exit.sh 赋予执行权限,最后直接运行:

./restart_on_exit.sh

好处是简单,坏处是循环本身也会消耗一点资源,而且如果进程频繁崩溃,它就会不停重启,缺乏更精细的控制。

方法二:用 supervisord 来专业管理

如果你需要更可靠、更易维护的方案,supervisord 是行业里常用的选择。它是一个进程管理工具,专门负责监控进程,并且能在进程异常退出时自动重启。用起来分几步走:

  1. 安装 supervisord
    大多数 Linux 发行版都能直接通过包管理器安装。比如在 Ubuntu 上:

    sudo apt-get update
    sudo apt-get install supervisor
  2. 编写配置文件
    /etc/supervisor/conf.d/ 目录下新建一个配置文件,例如 your_command.conf,内容如下:

    [program:your_command]
    command=your_command_here
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/your_command.err.log
    stdout_logfile=/var/log/your_command.out.log

    记得把 your_command_here 替换成你实际要运行的命令。

  3. 启动 supervisord
    执行:

    sudo supervisord -c /etc/supervisor/supervisord.conf

    这样 supervisord 会加载所有配置文件,并开始管理进程。

  4. 日常管理进程
    通过 supervisorctl 命令可以轻松控制:

    sudo supervisorctl start your_command
    sudo supervisorctl stop your_command
    sudo supervisorctl status your_command

相比 while 循环,supervisord 提供了更丰富的功能:支持多进程管理、日志轮转、进程组控制等,适合生产环境。而 while 循环则胜在零依赖、轻量快捷。到底选哪个,取决于你的实际场景——想要省事就上脚本,想要省心就用工具。

本文转载于:https://www.yisu.com/ask/68013033.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注