Go 为什么不在项目内部执行命令';s文件夹?
我正在尝试使用Go 为什么不在项目内部执行命令';s文件夹?,go,cron,sh,Go,Cron,Sh,我正在尝试使用sh文件执行命令,如下所示: #!/bin/bash echo "executing......................................" wget -i http://example.com -O /dev/null 当我直接从桌面文件夹访问时,它运行正常 但当我将其与我的golang项目整合时,例如: 我创建了一个名为myProject/sh的文件夹,并将文件粘贴到那里 现在在我的另一个包中使用cron,我试图访问test.sh文件 func Ru
sh
文件执行命令,如下所示:
#!/bin/bash
echo "executing......................................"
wget -i http://example.com -O /dev/null
当我直接从桌面文件夹访问时,它运行正常
但当我将其与我的golang项目整合时,例如:
我创建了一个名为myProject/sh
的文件夹,并将文件粘贴到那里
现在在我的另一个包中使用cron,我试图访问test.sh
文件
func RunCron() {
c := cron.New()
c.AddFunc("10 * * * * *", ExecuteFunction)
c.Start()
}
func ExecuteFunction(){
fmt.Println("test----------------")
utils.ExecuteCommand("sh "+config.GetBasePath()+"sh/test.sh")
}
现在它输出类似于
test----------------
Result: executing......................................
exit status 4: --2018-01-16 18:25:10-- http://example.com
Resolving http://example.com)... 1.1.1.1
Connecting to example.com (example.com)|2.2.2.2|:8080... failed: Connection refused.
No URLs found in example.com.
我无法理解为什么相同的代码在我的桌面文件夹中运行良好,但在我的项目文件夹中停止执行。你能告诉我我做错了什么来节省我的时间吗
谢谢 您是否考虑过使用
“os/exec”
cmd:=exec.Command(“/bin/sh”,test.sh)
编辑:对,我当时没有建议,我自己测试了一下
func main() {
cmd := exec.Command("/bin/sh", "test.sh")
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatalf("cmd.Run() failed with %s\n", err)
}
fmt.Printf("output is :\n%s\n", string(out)) }
它正在执行,它只是以非零代码退出,因为您试图读取URL列表以从名为
http://example.com
。输出清楚地告诉您:在example.com中找不到URL
。但是当我从项目中访问相同的代码时,它会显示/dev/null 100%[=================================================================================================================================]60---KB/s在0s 2018-01-16 18:32:08(4.31 MB/s)-“/dev null”已保存[60/60]
文件包含#/bin/bash echo“正在执行…”wget-ihttp://example.com:8080/api/v1/test-shfile-O/dev/null
连接到您传递的任何主机似乎都有问题。您是否在同一台计算机上运行脚本和程序?主机是一个普通字符串,还是您碰巧使用了环境变量?它需要任何凭证吗?建议属于评论,而不是答案。这仍然不能回答OP的问题。问题已到达http://example.com/...
在脚本中,不运行实际脚本。ohh jezz。。我甚至都没看到。哇。。我的错。3.我没听清楚。