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