問題背景
你高高興興的寫好了一個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 ? 你會好奇,你明明使用了:
go mod init test
go mod tidy
然后你測驗了一下,如果cd /root/test/,然后run 是非常正常的,
一旦在非/root/test/目錄下,就會出現這種路徑報錯問題,
類似的問題還有:
? root go run /Users/thoth/program/gocode/alarm15m/main.go
alarm15m/main.go:12:2: package alarm15m/mypath is not in GOROOT (/usr/local/go/src/alarm15m/mypath)
alarm15m/main.go:13:2: package alarm15m/tools is not in GOROOT (/usr/local/go/src/alarm15m/tools)
Xxx is not in GOROOT , 總是在導包上出問題!
這b玩意,為啥這樣,我也不知道,我也不想研究他(每天的學習任務安排很滿,我覺得這種就是特定語言特定的場景沒必要,通識性知識才是重要的,這種Xxx語言我一天就會切換3~4種,很難每個都去研究,完成任務就好),估計就是有他路徑設定的考慮,管他呢,反正有一點確定的就是在專案路徑下執行一定是成功的,基于這個很確定的點,我想到一些曲線救國方案,
解決
直接寫sh腳本
run.sh
#!/bin/sh
cd /root/test/
go run main.go
crontab -e
*/15 * * * * bash /root/test/run.sh
完美解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/1897.html
標籤:Go
上一篇:Go—安裝配置運行環境
