无法使用cron作业运行Go应用程序(使用操作系统库)



当我尝试用cron作业运行Go应用程序时遇到了一个问题。操作系统库的每个函数似乎都无法在cron作业中执行。这是我的密码。我找了很多时间,但还没有独奏。

这是我的代码

package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
out, err := exec.Command("ls").Output()
file, _ := os.Create("test.txt")
_, err1 := file.Write([]byte(string(out) + "n"))
if err == nil && err1 == nil {
fmt.Println("test")
}
fmt.Println(string(out))
}

这是我的cron工作

* * * * * go run /root/code/main.go

请帮助我解决这个问题,或者建议我使用cron作业运行go应用程序。

默认情况下,cron作业由root用户运行,并且根用户的路径中可能没有go二进制文件。要检查此项,您可以运行。

# crontab -e
* * * * * whoami >> /tmp/debug.txt && where go && echo OK >> /tmp/debug.txt || echo ERROR >> /tmp/debug.txt

它将向您显示用户信息和";我能找到go二进制"吗;信息

您可以更改运行cronjob 的用户

更好的方式

正如其他人所说,使用go run运行Go代码不是一个好主意。每次编译器都需要编译代码并运行它

如果您运行go build并运行生成的可执行文件,它将简化您的工作流程。此外,默认情况下,go二进制文件是包含所有依赖项的单个二进制文件,这简化了很多事情。你可以在的任何地方使用./executable-name

相关内容

最新更新