go 执行 ps -ef|grep xxx命令

package main

import (
	"bytes"
	"fmt"
	"os/exec"
)

func SetCmdStd(cmd *exec.Cmd) (stdOut, stdErr *bytes.Buffer) {
	stdOut = &bytes.Buffer{}
	stdErr = &bytes.Buffer{}
	cmd.Stdout = stdOut
	cmd.Stderr = stdErr
	return
}

func main() {

	catCmt := exec.Command("cat", "readme.md")
	catOut, catErr := SetCmdStd(catCmt)
	catRunErr := catCmt.Run()
	if catRunErr != nil {
		fmt.Println("cat run err", catRunErr, catErr)
	}
	fmt.Println(catOut)

	// ls  -l 要先写命令,然后写-l参数
	lsCmd := exec.Command("ls", "-l")
	lsStdOut, lsStdErr := SetCmdStd(lsCmd)

	err := lsCmd.Run()
	if err != nil {
		fmt.Println("命令运行出错", err, lsStdErr)
		return
	}
	fmt.Println("命令执行成功:", lsStdOut)

	//带管道 | 的命令不能直接执行,要分步骤执行
	// ps -ef|grep -i php|wc -l 要先写命令,然后写-l参数
	ps := exec.Command("ps", "-ef")
	psOut, psErr := SetCmdStd(ps)
	err = ps.Run()
	if err != nil {
		fmt.Println("执行错误", err.Error(), psErr.String())
		return
	}

	//执行grep操作,grep上面的执行结果
	grep := exec.Command("grep", "php")
	grep.Stdin = psOut //把上面执行的结果放到grep的输入

	grepStdout, grepStderr := SetCmdStd(grep)
	err = grep.Run()
	if err != nil {
		fmt.Println("命令grep出错", err, grepStderr.String())
	}

	fmt.Println("命令执行成功,结果1", grepStdout)

	wc := exec.Command("wc", "-l")
	wc.Stdin = grepStdout
	wcOut, _ := SetCmdStd(wc)
	err = wc.Run()
	if err != nil {
		fmt.Println("wc执行错误", err)
		return
	}

	fmt.Println("wc执行成功", wcOut)

	// /Users/denny/spider/software/Darwin_ffmpeg --help
	mpeg := exec.Command("/Users/denny/spider/software/Darwin_ffmpeg", "--help")
	mpOut, mpErr := SetCmdStd(mpeg)
	err = mpeg.Run()
	if err != nil {
		fmt.Println("ffmpeg", err, mpErr)
	}
	fmt.Println(mpOut)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值