You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统下如何分离进程 关闭PuTTY后程序仍可持续运行

方案1:使用nohup命令(最便捷,适合临时运行)

nohup会忽略终端挂断信号,进程在关闭SSH连接后依然会保留运行。
执行命令:
nohup python3 你的机器人脚本路径.py &

  • 执行后程序的标准输出和错误会默认写入当前目录下的nohup.log文件
  • 如需自定义日志路径,使用命令:nohup python3 你的机器人脚本路径.py > 自定义日志文件路径.log 2>&1 &
  • 要查看运行状态,执行ps aux | grep python3即可找到对应进程PID
  • 需要停止程序时执行kill 对应的PID即可

方案2:使用screen会话工具(适合需要随时查看程序前台输出的场景)

你之前操作未生效大概率是操作步骤有误,按以下流程操作即可:

  1. 先安装screen:sudo apt update && sudo apt install screen -y
  2. 新建专属会话:screen -S chatbot
  3. 进入会话后正常执行你的Python3启动命令,运行聊天机器人
  4. 按下Ctrl + a后松开,再按d即可将会话放在后台运行,此时可以直接关闭PuTTY
  5. 下次需要重新进入会话查看输出时,执行screen -r chatbot即可
  6. 如果忘记会话名称,执行screen -ls即可查看所有后台运行的screen会话

方案3:配置systemd系统服务(最稳定,适合长期后台运行的服务)

该方案可以实现开机自动启动、程序崩溃自动重启,适合生产环境长期部署:

  1. 新建服务配置文件:sudo nano /etc/systemd/system/chatbot.service
  2. 写入以下配置,注意替换占位内容为你自己的实际路径和用户名:
[Unit]
Description=聊天机器人后台服务
After=network.target

[Service]
User=你的Ubuntu用户名
WorkingDirectory=你的聊天机器人脚本所在的文件夹绝对路径
ExecStart=/usr/bin/python3 你的聊天机器人脚本的绝对路径.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 保存退出后,重载系统服务配置:sudo systemctl daemon-reload
  2. 启动服务:sudo systemctl start chatbot
  3. 设置开机自动启动:sudo systemctl enable chatbot
  4. 常用操作命令:
    • 查看服务运行状态:sudo systemctl status chatbot
    • 查看实时运行日志:journalctl -u chatbot -f
    • 重启服务:sudo systemctl restart chatbot
    • 停止服务:sudo systemctl stop chatbot

之前操作失效的原因说明

  • Ctrl+z + bg的操作只是将进程放到当前SSH会话的后台运行,进程依然和当前会话绑定,关闭PuTTY断开SSH连接时,系统会给会话下的所有进程发送SIGHUP挂断信号,进程会被直接终止,所以无法实现后台常驻
  • 若screen操作未生效,大概率是操作时未正确执行detach步骤,或安装的screen版本存在异常,按上述方案2的步骤重新操作即可解决

相关运行截图:
Chatbot Output
Ubuntu Screen running python program

内容的提问来源于stack exchange,提问作者hengjuice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:27:03