nohup 命令在 Debian 和其他 Linux 发行版中用于在后台运行命令,即使用户退出登录或关闭终端,该命令也会继续运行。nohup 的全称是 “no hang-up”,它通过忽略挂起(SIGHUP)信号来实现这一功能。
SIGHUP 信号:
nohup 的作用:
nohup 命令会忽略 SIGHUP 信号,从而防止进程在用户退出登录或关闭终端时被终止。nohup 还会将标准输出和标准错误重定向到一个名为 nohup.out 的文件中,除非指定了其他输出文件。nohup your_command &
your_command 是你想要在后台运行的命令。& 符号将命令放入后台运行。忽略 SIGHUP:
nohup 命令通过调用 signal 函数将 SIGHUP 信号的处理方式设置为 SIG_IGN(忽略)。重定向输出:
nohup 会将标准输出和标准错误重定向到 nohup.out 文件。nohup your_command > output_file 2>&1 &
> 将标准输出重定向到 output_file,2>&1 将标准错误重定向到标准输出,& 将命令放入后台运行。-c:不使用 shell 启动命令,直接执行命令。-m:指定一个信号处理程序来处理 SIGHUP 信号(不常用)。nohup 运行的进程不会自动重启,如果进程意外终止,你需要手动重新启动它。systemd 服务或 supervisord 等工具。通过理解 nohup 的信号处理机制,你可以更好地控制后台进程的行为,确保它们在用户退出登录或关闭终端后仍然继续运行。