树莓派Ubuntu18.04下使用crontab定时重启opencanary失败求助
问题修复方案
- 脚本内
SHELL=/bin/sh属于无效配置,仅作用于crontab配置文件,写在bash脚本中无实际意义,直接删除即可。 - 脚本第一行声明为
#!/bin/bash,但crontab日志显示实际用sh调用脚本:Ubuntu默认sh指向dash,与bash语法存在差异,且虚拟环境的activate脚本依赖bash特性,用sh执行会直接失败。
修复方式:先给脚本添加可执行权限:chmod +x /home/pi/restartOC.sh,crontab执行时直接调用脚本文件即可,无需额外指定sh。 - 日志重定向规则不完整:你当前仅重定向了标准输出,错误输出未写入日志,因此test.log始终为空,看不到报错信息。需将重定向规则修改为
>> /home/pi/test.log 2>&1,将标准错误也合并到日志文件中,同时日志路径写绝对路径,避免文件生成到未知目录。 - 无需额外激活虚拟环境:直接调用虚拟环境bin目录下的opencanaryd可执行文件效果完全一致,还能避免环境变量加载失败的问题,脚本可简化为:
#!/bin/bash /home/pi/canary-env/bin/opencanaryd --restart
- 最终修改后的crontab定时任务为:
*/3 * * * * /home/pi/restartOC.sh >> /home/pi/test.log 2>&1
内容的提问来源于stack exchange,提问作者ElBiasto
相关产品推荐
相关产品推荐

