最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang使用os/exec庫查詢進程方式

 更新時間:2026年04月27日 09:09:25   作者:alden_ygq  
本文介紹了使用Go語言os/exec查詢進程的方法,并提供了兩種方式,第一種方式輸出了當前系統(tǒng)所有運行的進程,第二種方式可以過濾出指定進程的信息

golang使用os/exec庫查詢進程

本文主要介紹如何使用os/exec庫查詢進程。

package main

import (

    "fmt"

    "os/exec"

)

func main() {

    cmd := exec.Command("ps", "-ef")

    output, err := cmd.Output()

    if err != nil {

        fmt.Println(err)

        return

    }

    fmt.Println(string(output))

}

輸出:

 go run process.go
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0  1 170  ??       114:31.61 /sbin/launchd
    0   287     1   0  1 476  ??        21:22.98 /usr/libexec/logd
    0   288     1   0  1 476  ??         1:09.95 /usr/libexec/UserEventAgent (System)
    0   290     1   0  1 476  ??         0:23.88 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
    0   291     1   0  1 476  ??        24:42.10 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
    0   292     1   0  1 476  ??        28:48.91 /Library/Application Support/Symantec/Silo/MES/Daemon/SymDaemon
    0   296     1   0  1 476  ??         1:01.12 /Library/PrivilegedHelperTools/AliCloudPrinterUpdater
    0   298     1   0  1 476  ??        57:11.04 /usr/sbin/systemstats --daemon
    0   300     1   0  1 476  ??        13:41.30 /usr/libexec/configd
    0   301     1   0  1 476  ??        14:46.12 /Library/Application Support/AntGroup/starpoint/Mobius
    0   303     1   0  1 476  ??         6:36.35 /System/Library/CoreServices/powerd.bundle/powerd
  501   304     1   0  1 476  ??         0:08.48 /Library/McAfee/agent/bin/macmnsvc self_start
    0   305     1   0  1 476  ??         1:48.76 /Library/McAfee/agent/bin/masvc self_start
    0   306     1   0  1 476  ??         0:00.01 /usr/libexec/IOMFB_bics_daemon
    0   309     1   0  1 476  ??         0:00.59 /usr/libexec/remoted
    0   317     1   0  1 476  ??         0:30.29 /usr/libexec/watchdogd
    0   321     1   0  1 476  ??        25:27.64 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
    0   323     1   0  1 476  ??         0:01.38 /usr/libexec/kernelmanagerd
    0   324     1   0  1 476  ??         0:43.61 /usr/libexec/diskarbitrationd
    0   330     1   0  1 476  ??         0:31.26 /usr/sbin/syslogd
    0   333     1   0  1 476  ??         1:51.28 /usr/libexec/thermalmonitord
    0   334     1   0  1 476  ??        27:10.87 /usr/libexec/opendirectoryd
    0   335     1   0  1 476  ??         1:15.07 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd
    0   337     1   0  1 476  ??         0:01.15 /Library/PrivilegedHelperTools/com.docker.vmnetd
    0   338     1   0  1 476  ??         9:32.88 /System/Library/CoreServices/launchservicesd
  213   341     1   0  1 476  ??         0:01.83 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
    0   342     1   0  1 476  ??         1:12.54 /usr/sbin/securityd -i
    0   343     1   0  1 476  ??         0:00.03 auditd -l

上述代碼邏輯會獲取到當前系統(tǒng)中所有運行的進程,但如果只需要獲取制定進程信息呢,就需要針對進程進行過濾。

第一種方式

package main



import (

    "fmt"

    "bytes"
    "os/exec"

)
func RunCmd(cmdstring string) (string, error) {
	var out bytes.Buffer
	var stderr bytes.Buffer
	cmd := exec.Command("/bin/sh", "-c", cmdstring)
	cmd.Stdout = &out
	cmd.Stderr = &stderr
	err := cmd.Run()
	if err != nil {
		fmt.Printf("err:%v\n",err)
		return fmt.Sprintf("%s",stderr.String()),err
	}
	return fmt.Sprintf("%v",out.String()),nil
}

func main() {
    cmd := fmt.Sprintf("ps -ef | grep '%v'| grep -v grep","/bin/zsh --login -i")
    result,err := RunCmd(cmd)
    if err != nil {
	fmt.Printf("run cmd:%v failed:%v\n",cmd,err)
	return
    }

    fmt.Println(result)

}

輸出:

$ go run process.go
  502 45987 45915   0  8 623  ttys004    0:00.09 /bin/zsh --login -i
  502 76923 45915   0 13 623  ttys009    0:00.07 /bin/zsh --login -i
  502 39231 45915   0 三02下午 ttys012    0:00.08 /bin/zsh --login -i

第二種方式

package main



import (

    "fmt"
    "strings"
    "bytes"
    "os/exec"

)
func RunCmd(cmdstring string) (string, error) {
	var out bytes.Buffer
	var stderr bytes.Buffer
	cmd := exec.Command("/bin/sh", "-c", cmdstring)
	cmd.Stdout = &out
	cmd.Stderr = &stderr
	err := cmd.Run()
	if err != nil {
		fmt.Printf("err:%v\n",err)
		return fmt.Sprintf("%s",stderr.String()),err
	}
	return fmt.Sprintf("%v",out.String()),nil
}

func main() {
    //cmd := fmt.Sprintf("ps -ef | grep '%v'| grep -v grep","/bin/zsh --login -i")
    cmd := fmt.Sprintf("ps -ef")
    result,err := RunCmd(cmd)
    if err != nil {
	fmt.Printf("run cmd:%v failed:%v\n",cmd,err)
	return
    }
    lines := strings.Split(result, "\n")
    for _, line := range lines {
        if strings.Contains(line, "/bin/zsh --login -i") {
            fmt.Println(line)
        }
    }
}

輸出:

 $ go run process.go
  502 45987 45915   0  8 623  ttys004    0:00.09 /bin/zsh --login -i
  502 76923 45915   0 13 623  ttys009    0:00.07 /bin/zsh --login -i
  502 39231 45915   0 三02下午 ttys012    0:00.08 /bin/zsh --login -i

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Go語言雙向鏈表list.List的實現(xiàn)示例

    Go語言雙向鏈表list.List的實現(xiàn)示例

    Go語言中的list.List是包提供的雙向鏈表實現(xiàn),具有高效的插入和刪除操作能力,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-09-09
  • Go系列教程之反射的用法

    Go系列教程之反射的用法

    這篇文章主要介紹了Go系列教程之反射的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用golang-unsafe包的注意事項及說明

    使用golang-unsafe包的注意事項及說明

    這篇文章主要介紹了使用golang-unsafe包的注意事項及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 在Go中使用JSON(附demo)

    在Go中使用JSON(附demo)

    Go開發(fā)人員經(jīng)常需要處理JSON內(nèi)容,本文主要介紹了在Go中使用JSON,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Go基礎系列:Go切片(分片)slice詳解

    Go基礎系列:Go切片(分片)slice詳解

    這篇文章主要介紹了Go語言中的切片(分片)slice詳細說明?,需要的朋友可以參考下
    2022-04-04
  • 使用Go語言編寫HTTP中間件的示例詳解

    使用Go語言編寫HTTP中間件的示例詳解

    在Go語言中,HTTP中間件是一種處理HTTP請求和響應的函數(shù),它可以攔截到請求并對其進行處理,然后再將請求傳遞給下一個中間件或目標處理程序,本文給大家介紹了使用Go語言編寫HTTP中間件的示例,文中有相關的代碼示例供大家參考,需要的朋友可以參考下
    2024-01-01
  • 詳解go語言的并發(fā)

    詳解go語言的并發(fā)

    這篇文章主要介紹了go語言并發(fā)的相關資料,幫助大家更好的理解和學習使用golang,感興趣的朋友可以了解下
    2021-03-03
  • go語言實現(xiàn)sqrt的方法

    go語言實現(xiàn)sqrt的方法

    這篇文章主要介紹了go語言實現(xiàn)sqrt的方法,實例分析了Go語言實現(xiàn)計算平方根的技巧,需要的朋友可以參考下
    2015-03-03
  • Go語言泛型打造優(yōu)雅的切片工具庫

    Go語言泛型打造優(yōu)雅的切片工具庫

    泛型是一種編程范式,允許開發(fā)者在編寫代碼時定義通用的類型參數(shù),而不是具體的類型,本文將使用泛型實現(xiàn)打造優(yōu)雅的切片工具庫,希望對大家有所幫助
    2025-02-02
  • go日志庫logrus的安裝及快速使用

    go日志庫logrus的安裝及快速使用

    這篇文章主要為大家介紹了go日志庫logrus的安裝及快速使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論

乌苏市| 达孜县| 渭源县| 新竹市| 禄劝| 铜山县| 湖南省| 长治市| 彝良县| 宁陵县| 锡林浩特市| 吉木萨尔县| 普兰店市| 甘孜| 安塞县| 七台河市| 浦城县| 城步| 潜江市| 磴口县| 新丰县| 上犹县| 铜山县| 准格尔旗| 斗六市| 扶风县| 东海县| 寿阳县| 乌兰县| 新丰县| 平乐县| 平阳县| 平凉市| 双辽市| 蒙城县| 顺义区| 岳西县| 霍邱县| 涟水县| 云龙县| 南部县|