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)
}
}