Contents

Go exec

os/exec 系统内执行命令

1、查找命令所在的路径

func findCommandPath(str string) (string, error) {
	path, err := exec.LookPath(str)
	if err != nil {
		return "", err
	}
	return path, nil

}

2、CombinedOutput组合输出,标准正确错误输出,类似于shell的将标准错误输出重定向到标准正确输出

func main() {
	cmd := exec.Command("/bin/bash", "-c", "datex")
	std, err := cmd.CombinedOutput()
	if err != nil {

	}
	fmt.Println(string(std))

}

3、Output 标准正确输出

func main() {
	cmd := exec.Command("/bin/bash", "-c", "date")
	result, err := cmd.Output()
	if err != nil {
	fmt.Println("命令执行失败", err)
	}
	fmt.Println(string(result))
}

4、阻塞Run

package main

import (
	"log"
	"os/exec"
)

func main() {
	cmd := exec.Command("sleep", "1")
	log.Printf("Running command and waiting for it to finish...")
	err := cmd.Run()
	log.Printf("Command finished with error: %v", err)
}

可用函数

// 获取命令的路径
func findCommandPath(str string) (string, error) {
	path, err := exec.LookPath(str)
	if err != nil {
		return "", err
	}
	return path, nil
}

// 获取标准正确输出
func runCmd(str string) (string, error) {
	cmd := exec.Command("/bin/sh", "-c", str)
	result, err := cmd.Output()
	if err != nil {
		return "", err
	}
	return string(result), nil

}

// 标准正确错误输出到标准正确输出
func runCMD(str string) (string, error) {
	cmd := exec.Command("/bin/sh", "-c", str)
	result, err := cmd.CombinedOutput()
	if err != nil {
		return string(result), err
	}
	return string(result), nil
}

os

函数名 说明 备注
os.Hostname() 获取主机名
os.Getwd() 获取当前目录
os.Getuid() 获取用户ID
os.Geteuid() 获取有效用户ID
os.Getgid() 获取组ID
os.Getegid() 获取有效组ID
os.Getpid() 获取进程ID
os.Getppid() 获取父进程ID
os.Getenv(“GOPATH”) 获取环境变量的值
os.Setenv(“ORACLE_BASE”, “/op/oracle/orabase”) 设置环境变量的值
os.Chdir("/home/oracle") 改变当前工作目录