最常用但常写错的 nohup 命令必须同时满足忽略 SIGHUP、后台执行、输出重定向、路径与权限可靠四条件;漏一即断开 SSH 后进程大概率消失。

Linux怎么设置脚本在后台持续运行

nohup ./script.sh > log 2>&1 & 是最常用但常写错的组合

它不是“加个 nohup 就完事”,而是必须同时满足四个条件:忽略 SIGHUP、后台执行、输出重定向、路径与权限可靠。漏掉任意一个,断开 SSH 后进程大概率消失。

Python 脚本要加 -u 参数,否则日志延迟严重

Python 默认启用 stdout 缓冲,尤其在重定向到文件时,输出可能卡住几十秒甚至更久才刷盘。这不是 nohup 的问题,而是 Python 自身行为。

真正脱离终端控制,用 setsid 而不是 nohup &

nohup ./script.sh > log 2>&1 & 意外退出时,很可能是shell在退出前向作业表中的进程发送了SIGHUP信号。即使进程忽略了该信号,某些程序(例如包含readline的交互逻辑)也会主动清理并退出。

长期服务别硬扛 nohup,改用 systemd --user

nohup 是临时方案,不是服务管理工具。它不处理崩溃重启、依赖顺序、资源限制、日志轮转 —— 这些都得自己补。

真正棘手的问题并非“如何启动它”,而是“怎样让它持续稳定地运行”。nohup解决的是信号问题,setsid解决的是会话问题,systemd解决的是生命周期问题——选择哪一个,取决于你是否愿意为稳定性多花费十分钟进行配置。

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