登录
首页 >  Golang >  Go问答

Nginx version 命令执行无输出

来源:stackoverflow

时间:2024-03-14 12:00:29 115浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《Nginx version 命令执行无输出》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在尝试使用 go 检查我的计算机上安装了哪个版本的 nginx。

这是我的片段:

package main

import (
    "bytes"
    "errors"
    "fmt"
    "os/exec"
)

func runCommand(command string, arg ...string) (string, error) {
    cmd := exec.Command(command, arg...)
    cmdOutput := &bytes.Buffer{}
    errOutput := &bytes.Buffer{}
    cmd.Stdout = cmdOutput
    cmd.Stderr = errOutput
    err := cmd.Run()
    if err != nil {
        return "", errors.New(string(errOutput.Bytes()))
    }
    fmt.Println("Command succeeded")
    return string(cmdOutput.Bytes()), nil
}

func getVersion(command string, arg ...string) {
    path, err := exec.LookPath(command)
    if err != nil {
        fmt.Println("No path for " + command + " found")
        return
    }
    fmt.Println("Path for " + command + " is " + path)

    result, err := runCommand(path, arg...)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(command + " version is: " + result)
}

func main() {
    getVersion("go", "version") // works
    getVersion("nginx", "-v") // does not work
    getVersion("firefox", "-v") // works
}

对于 go 和 firefox,它工作得很好,但是对于 nginx,它既不返回版本,也不返回错误。似乎返回一个空字符串...

查看权限: firefox 文件是 root:root 拥有的 sh 文件的符号链接,权限为 755。 nginx 文件由 root:root 拥有,权限也为 755。

当然,运行命令 nginx -v 是有效的。


解决方案


您正在期待标准输出的输出。它正在打印到 stderr。尝试 cmd.CombinedOutput()

以上就是《Nginx version 命令执行无输出》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>