Golang仿ps實(shí)現(xiàn)獲取Linux進(jìn)程信息
原理
遍歷讀取/proc/獲取所有進(jìn)程ID
cat /proc/5181/stat中前四列分別為進(jìn)程PID,進(jìn)程名,進(jìn)程狀態(tài),父進(jìn)程PID

Go代碼
1.獲取/proc/下面所有文件名+文件夾名為數(shù)字的名字
2.讀取/proc/xxx/stat獲取進(jìn)程信息輸出
package main
import (
"fmt"
"io/ioutil"
"log"
"regexp"
"sort"
"strconv"
)
func main() {
var process []int
var validId = regexp.MustCompile("^[0-9]+$")
infoList, err := ioutil.ReadDir("/proc")
if err != nil {
log.Println(infoList)
}
for _, info := range infoList {
if info.IsDir() && validId.MatchString(info.Name()) {
p, _ := strconv.Atoi(info.Name())
process = append(process, p)
}
}
sort.Ints(process)
statRe := regexp.MustCompile(`([0-9]+) \((.+?)\) [a-zA-Z]+ ([0-9]+)`)
fmt.Printf("%6s\t%6s\t%s\n", "PID", "PPID", "NAME")
for _, p := range process {
b, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/stat", p))
if err != nil {
continue
}
matches := statRe.FindStringSubmatch(string(b))
fmt.Printf("%6s\t%6s\t%s\n", matches[1], matches[3], matches[2])
}
}測(cè)試驗(yàn)證
運(yùn)行程序查看

到此這篇關(guān)于Golang仿ps實(shí)現(xiàn)獲取Linux進(jìn)程信息的文章就介紹到這了,更多相關(guān)Go獲取Linux進(jìn)程信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang中struct和interface的基礎(chǔ)使用教程
Go不同于一般的面向?qū)ο笳Z言,需要我們好好的學(xué)習(xí)研究,下面這篇文章主要給大家介紹了關(guān)于golang中struct和interface的基礎(chǔ)使用的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
重學(xué)Go語言之基礎(chǔ)數(shù)據(jù)類型詳解
Go語言有非常強(qiáng)大的數(shù)據(jù)類型系統(tǒng),其支持的數(shù)據(jù)類型大體上可分為四類:基礎(chǔ)數(shù)據(jù)類型、引用數(shù)據(jù)類型、接口類型、復(fù)合類型。本文就來講講它們各自的用法吧2023-02-02
以alpine作為基礎(chǔ)鏡像構(gòu)建Golang可執(zhí)行程序操作
這篇文章主要介紹了以alpine作為基礎(chǔ)鏡像構(gòu)建Golang可執(zhí)行程序操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Go語言題解LeetCode268丟失的數(shù)字示例詳解
這篇文章主要為大家介紹了Go語言題解LeetCode268丟失的數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Golang使用channel實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能
最近補(bǔ)?Golang?channel?方面八股的時(shí)候發(fā)現(xiàn)用?channel?實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能好像不是很難,之前寫的?HTTP?框架剛好也不支持優(yōu)雅退出功能,于是就參考了?Hertz?優(yōu)雅退出方面的代碼,為我的?PIANO?補(bǔ)足了這個(gè)?feature2023-03-03

