新创建的 crontab 作业失败,因为程序无法读取同一目录中包含凭据的 .json 文件。这两个文件都包含在一个文件夹中/home/deploy/app/
。Crontab 执行/home/deploy/app/app
需要读取home/deploy/app/config.json
才能执行的内容。该程序在deploy
用户端运行良好,但在 crontab 运行时失败。
我确信这是程序失败的原因,因为我指示 crontab 作业记录其输出,并且我可以看到程序无法读取该config.json
文件。app
具有以下权限-rwxr-xr-x 1 deploy deploy
,并且config.json
具有-rw-rw-r-- 1 deploy deploy
。
crontab 条目是:
10 0,6,9,12,15,18 * * * /home/deploy/gocode/bin/BuoyBot > /home/deploy/buoybot.log 2>&1
cron日志记录了应用程序的错误,表明无法加载config.json
与应用程序存储在同一文件夹中的文件。
error loading config.json: invalid argument
当从文件夹内手动运行该程序时不会发生此错误/home/deploy/gocode/bin/
。
更新:如下所示,解决方案是引用config.json
应用程序内文件的完整路径(/home/user/app/config.json
),而不是引用本地目录(config.json
)。
答案1
如果没有看到代码,我猜测当您尝试打开数据文件时没有提供数据文件的完整路径。
答案2
您能否尝试以用户部署的方式启动 cron,如下所示:
10 0,6,9,12,15,18 * * * deploy /home/deploy/gocode/bin/BuoyBot > /home/deploy/buoybot.log 2>&1
或者您也可以尝试如下操作:
10 0,6,9,12,15,18 * * * deploy cd /home/deploy/gocode/bin/ && ./BuoyBot > /home/deploy/buoybot.log 2>&1
希望能帮助到你。