linux - crontab 不会运行 go/golang 程序

标签 linux go cron crontab

我设置了 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/

相关文章:

php - 启用线程安全的服务器 php

linux - Bash 脚本水印所有 .jpeg 没有缩略图

json - 将查询参数添加到 Go Json Rest

cron - cron 中的 mysql 备份问题

linux - Crontab @reboot 命令未附加到屏幕

c - 如何在 Linux 中抑制 -Werror=pointer-to-int-cast 和 -Werror=address 类型的错误

php - Ubuntu-16.04 + PHP-7.0.22 + ODBC 不工作

go - 将 Elm 与现有网络应用服务集成的正确方法

go - Go 内置函数使用泛型吗?

linux - 如何制作在不同时间和分钟发生的 cron 作业