1.问题说明

编写了一个golang程序,在shell脚本中定时进行执行,形成巡检表格,使用mailx邮件服务发送给相关人员。
结果发现每天的邮件并没有定时发送,但是手动执行shell脚本,golang程序是可以执行的。经排查发现,crontab定时执行shell脚本时,并没有执行golang程序,golang程序执行命令如下:

go run main.go

2.问题原因

使用crontab定时执行时,go命令无法被找到。

3.问题解决

go命令使用全路径,进行执行:
方法如下:

  • 查询go命令所在路径
# which go
/usr/local/go/bin/go
  • shell脚本中,填写go命令的绝对路径
/usr/local/go/bin/go run main.go