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
}