3 回答
TA贡献1783条经验 获得超4个赞
希望能帮助像我一样找不到解决方案的人:
可以通过向crontab -e文件中添加 path 和 gopath 变量来解决该问题。
你可以通过运行找到它们 echo $PATH echo $GOPATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
GOPATH=/var/projects/src
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0)
# | | | | |
*/5 * * * * /backup/main
由于 go 无法找到包的错误,您的代码可能无法运行
即您通过运行go get示例安装的第三个软件包
go get gopkg.in/gomail.v2
问题是go get您的工作目录中可能有!在我的情况下GOPATH=/var/projects/src
你可以看到里面的包裹
/your/working_directory/src/pkg/linux_amd64
TA贡献1828条经验 获得超3个赞
关于 cron 静默失败的传统观点是,它可能是环境造成的。通过将您的 golang 程序包装在一个 shell 脚本中,您可以控制环境(并使您的配置文件运行)。您还可以放入有用的调试位,例如“env”。
要使用空环境模拟 cron,请运行:
env -i ./myscript.sh
其中 myscript.sh 是 chmod +x 并且只运行“env”。然后把你的 golang 命令放在那里,看看它在没有环境的情况下是否仍然有效。然后当你证明它是环境(希望如此)时,在 cron 中使用 shell 脚本。
TA贡献1856条经验 获得超17个赞
可能有什么问题,程序打印了一些日志,但是日志会被重定向到/dev/null,你无法查看错误日志。您可以添加它以将日志打印到某个日志文件。
*/5 * * * * /backup/main 1>> /path/to/log/file 2>>/path/to/error_log/file
- 3 回答
- 0 关注
- 378 浏览
添加回答
举报