exec执行命令
173字小于1分钟
2025-02-04
用Go进程访问外部命令执行流程
package main
import (
    "fmt"
    "os/exec"
)
func main() {
    // 要执行的shell命令
    cmd := "ls -a -l -h"
    // 创建一个新的命令对象
    execCmd := exec.Command("bash", "-c", cmd)
    // 执行命令并获取输出
    output, err := execCmd.Output()
    if err != nil {
        fmt.Printf("执行命令%s失败: %s\n", cmd, err)
        return
    }
    // 将输出转换为字符串并打印
    fmt.Printf("执行命令%s的输出:\n%s\n", cmd, string(output))
}还有一种,用其他进程完全代替Go进程
package main
import (
    "os"
    "os/exec"
    "syscall"
)
func main() {
    binary, lookErr := exec.LookPath("kubectl")
    if lookErr != nil {
        panic(lookErr)
    }
    args := []string{"kubectl", "get", "node", "--owide"}
    env := os.Environ()
    execErr := syscall.Exec(binary, args, env)
    if execErr != nil {
        panic(execErr)
    }
}