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

如何让Python脚本关闭Shell后持续运行?CentOS环境Discord Bot运维

刚好在CentOS上部署过Discord Bot,碰到过和你一样的问题——关闭SSH终端进程就挂了。给你几个靠谱的解决方案,按需选择就行:

方案1:用nohup(最简单快速,适合临时测试)

这是最省事的临时方案,不需要额外安装工具:

  • 运行Bot时加上nohup和后台符号:
    nohup python3 your_bot.py &
    
  • 执行后终端会提示你进程ID,Bot就会在后台跑了,关闭SSH也不会停
  • Bot的输出日志会默认存在当前目录的nohup.out文件里,想看日志可以用cat nohup.out或者tail -f nohup.out实时查看
  • 要停止Bot的话,先找进程ID:
    ps aux | grep your_bot.py
    
    然后用kill 进程ID结束进程
方案2:用screen/tmux(适合需要随时重新连接查看Bot输出的场景)

如果需要偶尔回到Bot的运行终端看输出或者调试,screen/tmux是更好的选择,它们能帮你保存会话:

用screen的步骤:

  1. 先安装screen(CentOS默认可能没有):
    sudo yum install screen -y
    
  2. 创建一个新的会话:
    screen -S bot_session
    
  3. 在这个会话里正常运行你的Bot:python3 your_bot.py
  4. 按Ctrl+A+D组合键,就能脱离这个会话回到主终端,此时Bot还在screen会话里运行,关闭SSH也没问题
  5. 下次想重新查看Bot的运行状态,重新连接会话:
    screen -r bot_session
    
  6. 如果记不清会话名,可以用screen -ls列出所有会话
  7. 要彻底停止Bot和会话,先连接会话,按Ctrl+C停Bot,再输入exit关闭会话

用tmux的话步骤类似,只是命令稍有不同,比如创建会话是tmux new -s bot_session,脱离是Ctrl+B+D,重新连接是tmux attach -t bot_session,按需选择就行

方案3:用systemd服务(最稳定,适合长期运行的生产环境)

这是我最推荐的方案,适合需要长期稳定运行的Bot,它能实现开机自动启动、进程崩溃自动重启,完全不用你手动管后台:

  1. 创建一个systemd服务文件:
    sudo nano /etc/systemd/system/discord-bot.service
    
  2. 粘贴以下内容,注意替换成你自己的信息:
    [Unit]
    Description=Discord Bot Service
    After=network.target  # 确保网络启动后再启动Bot
    
    [Service]
    User=your_username  # 替换成运行Bot的系统用户名
    WorkingDirectory=/path/to/your/bot/folder  # 替换成Bot脚本所在的目录
    ExecStart=/usr/bin/python3 your_bot.py  # 替换成Python路径和你的Bot脚本名
    Restart=always  # 进程崩溃时自动重启
    RestartSec=5  # 崩溃后5秒再重启
    StandardOutput=journal+console  # 日志输出到systemd的journal
    
    [Install]
    WantedBy=multi-user.target
    
  3. 保存并退出nano(按Ctrl+O,回车,再按Ctrl+X)
  4. 重新加载systemd配置:
    sudo systemctl daemon-reload
    
  5. 启动Bot服务:
    sudo systemctl start discord-bot
    
  6. 设置开机自动启动:
    sudo systemctl enable discord-bot
    
  7. 常用管理命令:
    • 查看Bot运行状态:systemctl status discord-bot
    • 查看实时日志:journalctl -u discord-bot -f
    • 停止Bot:sudo systemctl stop discord-bot
    • 重启Bot:sudo systemctl restart discord-bot

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:16:23