Go exec
Contents
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") | 改变当前工作目录 |