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

通过脚本创建的开机自启Cron任务无法执行指定脚本

通过脚本创建的开机自启Cron任务无法执行指定脚本

看了你的问题和提供的日志信息,我马上找到问题所在了!

先理下你的情况:你写了个bash脚本用来加载Cron任务文件,里面配置了@reboot执行指定脚本并输出日志,但重启后日志没生成,手动执行crontab命令也没用。从你给出的journalctl日志里,有一行关键内容:

Aug 10 05:40:06 uncommissioned CRON[766]: (user) CMD (/home/user/commissioning/20_run_commissioning.sh >> /home/user/commissioning/cron.log 2>&1^M)

注意命令末尾的^M——这是Windows风格的换行符(CR字符),Unix/Linux系统下的Cron会把这个字符当成命令的一部分,导致实际执行的命令带了多余字符,自然无法正常运行你的脚本,日志也不会生成。

解决步骤:

  1. 转换Cron任务文件的换行符为Unix格式
    如果你装了dos2unix工具,直接执行:
    dos2unix /home/user/folder/tmp/crontab-reboot-part-2.txt
    
    如果没有dos2unix,用sed命令去掉末尾的CR字符也可以:
    sed -i 's/\r$//' /home/user/folder/tmp/crontab-reboot-part-2.txt
    
  2. 重新加载Cron任务
    执行你原来的命令更新Cron:
    crontab /home/user/folder/tmp/crontab-reboot-part-2.txt
    
  3. 验证任务是否正确
    用crontab -l查看当前用户的Cron任务,确认那一行末尾没有^M字符。

另外补充下:你的脚本权限-rwxrwxr-x是没问题的,用户有执行权限;而且日志里显示Cron确实触发了@reboot任务,所以问题完全出在换行符上,调整后应该就能正常运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 16:18:09