我设置了 crontab 来运行已编译的 golang 脚本。该脚本负责将文件夹复制到 ftp。这没什么特别的。
我只需在命令行中输入“/backup/main”即可运行该程序,一切正常。
现在我想每晚都运行这个程序。我已将 cronjob 设置为每 5 分钟运行一次以测试它是否有效。它没有!
如果我检查系统日志,我可以看到程序正在被调用,但没有任何反应。
文件“/backup/main”是 chmod a+x crontab 设置在“sudo”(sudo crontab -e)中。所以alle权限应该没问题。
crontab中的一行:
*/5 * * * */备份/主
希望有人能提供帮助。
最佳答案
希望能帮助像我一样找不到解决办法的人:
可以通过将 path 和 gopath 变量添加到 crontab -e
文件来解决此问题。
你可以通过运行 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
example
go get gopkg.in/gomail.v2
问题是您的工作目录中可能有 go get
!
在我的例子中是 GOPATH=/var/projects/src
可以看到里面的包裹
/your/working_directory/src/pkg/linux_amd64
关于linux - crontab 不会运行 go/golang 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33934764/