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

Crontab中定时重启与重启后执行脚本的配置故障排查求助

Crontab中定时重启与重启后执行脚本的配置故障排查求助

你好呀!看了你的问题,马上发现了几个关键问题,咱们一步步来解决~

核心问题分析

  1. @reboot语法错误
    @reboot是crontab的特殊关键字,专门用来指定「系统重启后执行」的任务,它不需要前面的时间字段(比如你写的46 17 * * *)。把时间字段和@reboot混在一起写,crontab根本识别不了这个任务,这就是重启后脚本没运行的核心原因!

  2. 脚本执行逻辑漏洞
    你实际命令里的&& sudo su -c "cd /Old-LibDrive-Main" && nohup python3 main.py &存在逻辑问题:sudo su -c "cd /Old-LibDrive-Main"只是在临时的子shell里切换到root并执行cd命令,这个目录切换不会影响后续的命令,后面的nohup python3 main.py &还是在原来的工作目录执行,自然找不到main.py文件。

正确的配置方案

直接用下面的crontab配置替换你的原有内容:

# 定时重启任务(每天17:03执行)
3 17 * * * sudo shutdown -r now

# 重启后执行脚本的任务(注意没有前面的时间字段)
@reboot sleep 10 && sudo su -c "cd /Old-LibDrive-Main && nohup python3 main.py > /var/log/my_script.log 2>&1 &"

配置细节说明

  • 重启任务里加上now,让shutdown立即执行,避免不必要的等待;
  • @reboot单独作为定时字段,明确告诉crontab这是重启触发的任务;
  • 把cd和nohup命令放在同一个sudo su -c的引号内,确保cd后的工作目录对后续脚本生效;
  • 加上> /var/log/my_script.log 2>&1,把脚本的输出和错误信息都写入日志文件,方便后续排查问题。

简化版可选方案

如果你的用户本身拥有sudo权限,其实可以不用切换到root身份,直接用绝对路径执行脚本,配置更简洁:

3 17 * * * sudo shutdown -r now

@reboot sleep 10 && sudo nohup python3 /Old-LibDrive-Main/main.py > /var/log/my_script.log 2>&1 &

另外记得确认:/Old-LibDrive-Main目录存在,main.py文件有可读权限(如果需要执行权限,可运行chmod +x main.py)。

备注:内容来源于stack exchange,提问作者Aung Myo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:12:56