macOS终端nohup运行Python脚本失效,关闭终端程序终止求助
Python脚本后台持续运行问题解决
修正nohup命令
你当前的命令未处理标准错误输出,可能导致进程和终端仍存在关联,关闭终端时进程随之终止。改用以下命令:
nohup python3 -u "脚本路径" > out.log 2>&1 &
2>&1将标准错误重定向到标准输出,确保所有输出都写入日志文件,切断进程与终端的输出关联。
执行命令后,可通过disown将进程从当前终端作业列表移除,进一步避免终端关闭的影响:
# 先用jobs命令查看后台作业编号(比如%1),再执行 disown %1
验证方法:关闭终端后重新打开,执行ps aux | grep python3,若能看到脚本进程则说明成功。
替代方案
如果nohup仍不生效,可尝试以下方法:
1. 使用screen/tmux
适合需要随时重新连接查看脚本运行状态的场景:
- 安装screen(Debian/Ubuntu):
sudo apt install screen - 启动会话:
screen - 在会话内运行脚本:
python3 "脚本路径" - 分离会话(保留后台运行):按
Ctrl+A再按D - 重新连接会话:
screen -r
2. 创建systemd服务
适合长期运行、需要开机自启的脚本:
- 创建服务文件
/etc/systemd/system/python-script.service,替换路径和用户名:[Unit] Description=后台运行的Python脚本 After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/python3 /绝对路径/到/你的脚本.py Restart=always User=你的系统用户名 [Install] WantedBy=multi-user.target - 重新加载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start python-script - 设置开机自启:
sudo systemctl enable python-script - 查看运行状态:
sudo systemctl status python-script
内容的提问来源于stack exchange,提问作者cur
相关产品推荐
相关产品推荐

