問題背景
之前高高興興的寫好了一個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)