问题背景
之前高高兴兴的写好了一个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问题。
解决
- 需要现将golang项目打包编译成二进制执行文件,golang不是python。
- 写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)