Mysticbinary

只有通过概念的劳作才能获得真实的思想

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)

这篇文章对你有帮助吗?作为一名程序工程师,在评论区留下你的困惑或你的见解,大家一起来交流吧!
微信公众号: Mysticbinary
Github:https://github.com/Mysticbinary
本文版权归作者所有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文链接
声明:本文章仅限于讨论网络安全技术,请勿用作任何非法用途,否则后果自负,本人和博客园不承担任何责任!

posted on 2020-07-24 11:54  Mysticbinary  阅读(500)  评论(0编辑  收藏  举报

导航