GOLANG检查mongodb是否正在运行

时间:2017-05-31 11:44:33

标签: bash mongodb ubuntu go

我正在编写一个GO脚本来检查Mongo服务器是否正在运行。我的代码是,

import "bytes"
import "os/exec"
import "fmt"

func main() {
    cmd := exec.Command("ps", "-ef", "|", "grep", "mongod", "|", "grep", "-v", "grep", "|", "wc", "-l", "|", "tr", "-d", "'", "'")

    fmt.Println(cmd)
    var out bytes.Buffer
    var stderr bytes.Buffer
    cmd.Stdout = &out
    cmd.Stderr = &stderr
    err := cmd.Run()
    if err != nil {
        fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
        return
    }
    fmt.Println("Result: " + out.String())
}

但是将错误视为,"退出状态1:错误:垃圾选项" 。 还有其他方法可以用GOLANG检查吗?请告诉我。

1 个答案:

答案 0 :(得分:2)

如果你想超越将bash脚本移植到Go(这通常比它的价值更麻烦),你可以使用mgo library实际连接到MongoDB实例并检查它是否真的很健康:

package main

import (
    "gopkg.in/mgo.v2"
    "fmt"
    "os"
)

func main() {
    sess, err := mgo.Dial("localhost")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer sess.Close()
    err = sess.Ping()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println("MongoDB server is healthy.")
    os.Exit(0)
}