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

如何通过crontab运行GNU Screen会话实现Discord机器人每日重启?

解决Crontab启动Screen会话运行Discord机器人的问题

当然可以通过crontab运行Screen会话,你的问题主要出在cron的环境限制和脚本细节处理上,以下是具体的修复方案:

1. 修复脚本中的路径与命令问题

cron的默认工作目录不是用户的home目录,且PATH环境变量非常有限,必须使用绝对路径:

修改后的脚本示例:

#!/bin/bash
# 记录日志方便排查(可选但推荐)
exec >> /home/admin/discordBot/cron_restart.log 2>&1

# 关闭指定的screen会话(比pkill更安全,不会误杀其他进程)
/usr/bin/screen -S discordBot -X quit 2>/dev/null
sleep 1

# 启动新的screen会话,直接在启动时执行node命令(无需后续stuff操作)
/usr/bin/screen -dmS discordBot /usr/local/bin/node /home/admin/discordBot/NEWNEWNEWN.js

关键改进点:

  • 用screen -S discordBot -X quit替代sudo pkill screen,精准关闭目标会话,避免权限问题和误杀其他screen进程
  • 启动screen时直接指定要执行的node命令(screen -dmS 会话名 命令),省去后续用stuff输入命令的步骤,避免交互问题
  • 所有命令使用绝对路径:先通过which screen和which node确认你的实际路径,替换示例中的路径

2. 确保脚本权限正确

给脚本添加执行权限:

chmod +x /home/admin/discordBot/script.sh

3. 检查Crontab配置

确保你是用admin用户编辑的crontab(而非root):

crontab -e

保留原定时配置即可:

0 0 * * * /bin/bash /home/admin/discordBot/script.sh

4. 调试排查

如果还是失败,查看cron的执行日志:

  • 树莓派上可以查看系统日志:
    journalctl -u cron.service
    
  • 或者查看我们在脚本中添加的自定义日志:
    cat /home/admin/discordBot/cron_restart.log
    

日志会告诉你具体是命令找不到、权限不足还是脚本执行中的其他错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:20:18