golang 在crontab里面运行报错记录



问题背景

之前高高兴兴的写好了一个go脚本,发到服务器上,打算定期运行这个脚本,打开crontab -e,
然后输入:

*/1 * * * * go run /root/test/main.go

然后发现迟迟没有反应,查看一下输出什么错误:

*/1 * * * * go run /root/test/main.go >> /root/test/log.txt

然后报错如下:

build command-line-arguments: cannot load test/mypath: malformed module path "test/mypath": missing dot in first path element

missing dot in first path element ? What ? 想了一下,感觉是Golang环境问题,

测试了一下,如果cd /root/test/(项目路径下)run 是非常正常的,
一旦在非/root/test/目录下(非项目路径下),出现这种路径报错问题,都是gopath问题。

解决

  1. 需要现将golang项目打包编译成二进制执行文件,golang不是python。
  2. 写sh脚本制作执行步骤
    run.sh
#!/bin/sh  
cd /root/test/
go run main.go

crontab -e

*/15 * * * * bash /root/test/run.sh

完美解决。

cent OS下,用 tail -f /var/spool/cron/ 查看crontab执行情况:
*/10 * * * * bash /root/lj/myrun.sh

[root@tv6-03 ~]# tail -f /var/log/cron
Apr  9 10:00:01 tv6-03 CROND[31310]: (work) CMD (sh /home/work/op/clearlog_auto.sh)
Apr  9 10:00:01 tv6-03 CROND[31312]: (root) CMD (bash /root/lj/myrun.sh)
Apr  9 10:01:01 tv6-03 CROND[31943]: (root) CMD (run-parts /etc/cron.hourly)
Apr  9 10:01:01 tv6-03 run-parts(/etc/cron.hourly)[31943]: starting 0anacron
Apr  9 10:01:01 tv6-03 run-parts(/etc/cron.hourly)[31952]: finished 0anacron
Apr  9 10:05:01 tv6-03 CROND[1922]: (work) CMD (sh /home/work/op/clearlog_auto.sh)
Apr  9 10:10:01 tv6-03 CROND[5028]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr  9 10:10:01 tv6-03 CROND[5029]: (work) CMD (sh /home/work/op/clearlog_auto.sh)
Apr  9 10:10:01 tv6-03 CROND[5030]: (root) CMD (bash /root/lj/myrun.sh)
Apr  9 10:15:01 tv6-03 CROND[8053]: (work) CMD (sh /home/work/op/clearlog_auto.sh)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM