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])
}
}測試驗(yàn)證
運(yùn)行程序查看

到此這篇關(guān)于Golang仿ps實(shí)現(xiàn)獲取Linux進(jìn)程信息的文章就介紹到這了,更多相關(guān)Go獲取Linux進(jìn)程信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Go語言多態(tài)的實(shí)現(xiàn)與interface使用
如果大家系統(tǒng)的學(xué)過C++、Java等語言以及面向?qū)ο蟮脑?,相信?yīng)該對多態(tài)不會(huì)陌生。多態(tài)是面向?qū)ο蠓懂牣?dāng)中經(jīng)常使用并且非常好用的一個(gè)功能,它主要是用在強(qiáng)類型語言當(dāng)中,像是Python這樣的弱類型語言,變量的類型可以隨意變化,也沒有任何限制,其實(shí)區(qū)別不是很大2021-06-06
Go語言使用templ實(shí)現(xiàn)編寫HTML用戶界面
templ是一個(gè)在 Go 中編寫 HTML 用戶界面的語言,使用 templ,我們可以創(chuàng)建可呈現(xiàn) HTML 片段的組件,下面就跟隨小編一起了解一下具體的實(shí)現(xiàn)方法吧2023-12-12
GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識(shí)
這篇文章主要介紹了GO 語言運(yùn)行環(huán)境的基礎(chǔ)知識(shí)的相關(guān)資料,需要的朋友可以參考下2022-09-09
使用Go重構(gòu)流式日志網(wǎng)關(guān)的實(shí)戰(zhàn)分享
流式日志網(wǎng)關(guān)的主要功能是提供?HTTP?接口,接收?CDN?邊緣節(jié)點(diǎn)上報(bào)的各類日志(訪問日志/報(bào)錯(cuò)日志/計(jì)費(fèi)日志等),將日志作預(yù)處理并分流到多個(gè)的?Kafka?集群和?Topic?中,本文就給大家分享如何使用?Go?重構(gòu)流式日志網(wǎng)關(guān)2023-06-06
Go語言實(shí)現(xiàn)單端口轉(zhuǎn)發(fā)到多個(gè)端口
這篇文章主要為大家詳細(xì)介紹了Go語言實(shí)現(xiàn)單端口轉(zhuǎn)發(fā)到多個(gè)端口,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,對大家的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴可以了解下2024-02-02

