3 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
希望能幫助像我一樣找不到解決方案的人:
可以通過(guò)向crontab -e文件中添加 path 和 gopath 變量來(lái)解決該問(wèn)題。
你可以通過(guò)運(yùn)行找到它們 echo $PATH echo $GOPATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
GOPATH=/var/projects/src
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 6) (Sunday=0)
# | | | | |
*/5 * * * * /backup/main
由于 go 無(wú)法找到包的錯(cuò)誤,您的代碼可能無(wú)法運(yùn)行
即您通過(guò)運(yùn)行g(shù)o get示例安裝的第三個(gè)軟件包
go get gopkg.in/gomail.v2
問(wèn)題是go get您的工作目錄中可能有!在我的情況下GOPATH=/var/projects/src
你可以看到里面的包裹
/your/working_directory/src/pkg/linux_amd64

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
關(guān)于 cron 靜默失敗的傳統(tǒng)觀點(diǎn)是,它可能是環(huán)境造成的。通過(guò)將您的 golang 程序包裝在一個(gè) shell 腳本中,您可以控制環(huán)境(并使您的配置文件運(yùn)行)。您還可以放入有用的調(diào)試位,例如“env”。
要使用空環(huán)境模擬 cron,請(qǐng)運(yùn)行:
env -i ./myscript.sh
其中 myscript.sh 是 chmod +x 并且只運(yùn)行“env”。然后把你的 golang 命令放在那里,看看它在沒(méi)有環(huán)境的情況下是否仍然有效。然后當(dāng)你證明它是環(huán)境(希望如此)時(shí),在 cron 中使用 shell 腳本。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
可能有什么問(wèn)題,程序打印了一些日志,但是日志會(huì)被重定向到/dev/null,你無(wú)法查看錯(cuò)誤日志。您可以添加它以將日志打印到某個(gè)日志文件。
*/5 * * * * /backup/main 1>> /path/to/log/file 2>>/path/to/error_log/file
- 3 回答
- 0 關(guān)注
- 435 瀏覽
添加回答
舉報(bào)