欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020-12-28

程序员文章站 2022-05-29 22:25:28
...

golang cmd命令执行
1.golang cmd命令执行
(1.)执行命令并获取执行结果

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 通过exec.Command函数执行命令或者shell
	// 第一个参数是命令路径,当然如果PATH路径可以搜索到命令,可以不用输入完整的路径
	// 第二到第N个参数是命令的参数
	// 下面语句等价于执行命令: ls -l /var/
	cmd := exec.Command("/bin/ls", "-l", "/var/")
	// 执行命令,并返回结果
	output,err := cmd.Output()
	if err != nil {
		panic(err)
	}
	// 因为结果是字节数组,需要转换成string
	fmt.Println(string(output))

}

(2.)执行命令不返回结果

package main

import (
	"os/exec"
)

func main() {
	cmd := exec.Command("/bin/ls", "-l", "/var/")
	// 执行命令,返回命令是否执行成功
	err := cmd.Run()
	
	if err != nil {
		// 命令执行失败
		panic(err)
	}
}

判断路径是否是挂载点:

func exeSysCommand(cmdStr string) ([]byte, error) {
        cmd := exec.Command("sh", "-c", cmdStr)
        return cmd.Output()
}

/*
[email protected]:~# cat /proc/mounts | grep /nas/data
10.1.30.31:/nas /nas/data fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
[email protected]:~# df -h /nas/data/
Filesystem       Size  Used Avail Use% Mounted on
10.1.30.31:/nas  103T   12T   92T  11% /nas/data
[email protected]:~#
*/

func IsMountPoint(dir string) bool {
        _, err := exeSysCommand("cat /proc/mounts | grep " + dir)
        if err == nil {
                fmt.Println(dir, " is not mount point")
                return true
        }

        return false
}