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

如何设置Screen开机自动后台运行Telegram bot脚本并支持后续重连?

现有配置错误点
  • screen命令参数误用:-X 参数的作用是向已存在的screen会话发送控制指令,开机时不存在名为TELEGRAM的会话,指令会直接执行失败。
  • 环境变量缺失:crontab默认的PATH环境变量范围非常有限,无法直接调用screen、python3这类未写绝对路径的命令。
  • 可能缺少脚本执行权限:你没有提到对command.sh设置可执行权限,无执行权限的脚本无法直接运行。
修复方法
  1. 首先给脚本添加可执行权限:
    chmod +x /home/mainuser/Documents/LaunchCommands/command.sh
  2. 修改crontab配置,使用正确的screen启动参数,同时补全命令绝对路径。如果你是用crontab -e(非root权限)编辑的当前用户(mainuser)的定时任务,将@reboot行修改为:
    @reboot /usr/bin/screen -dmS TELEGRAM /home/mainuser/Documents/LaunchCommands/command.sh

说明:-d参数表示启动会话后直接detach到后台,-m参数表示强制新建独立会话,不受现有screen进程影响。/usr/bin/screen是screen命令的默认绝对路径,如果你本机路径不同可以用which screen查询替换。

  1. 可选优化:你可以将command.sh内的python3也补全绝对路径,避免环境变量问题,修改后脚本内容如下:
#!/bin/sh
cd "/home/mainuser/Documents/TelegramBot";
sleep 5
/usr/bin/python3 telegram_bot.py

验证方式:重启后执行screen -r TELEGRAM即可进入会话查看运行状态,按Ctrl+A D可再次detach到后台。

替代实现方案

如果不想使用screen,也可以选择以下同样支持后台运行+后续交互的方案:

  • tmux:和screen同属终端复用工具,语法更简洁规范,开机启动逻辑和上述方案一致,启动命令为/usr/bin/tmux new-session -d -s TELEGRAM /home/mainuser/Documents/LaunchCommands/command.sh,后续重连会话执行tmux attach -t TELEGRAM即可。
  • systemd服务:适合需要稳定开机自启、崩溃自动重启的场景,配置服务文件后可以通过journalctl直接查看运行日志,如需交互可以搭配配置虚拟TTY实现,管理逻辑比screen更标准化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:02