以下の内容はhttps://devlights.hatenablog.com/entry/2025/05/20/073000より取得しました。


Goメモ-577 (procfsを利用して全プロセス情報を取得)(procfs.FS, AllProcs)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。

Linux上でCPUやメモリやプロセスの情報を取得したりして処理する必要があったので、ちょっとライブラリを探してみたら

github.com

という便利なライブラリが見つかりました。/procファイルシステムの情報を扱いやすくしてくれます。

とても便利だったので、自分用に使い方のメモ残しておこうと思います。

サンプル(全プロセス情報)

main.go

package main

import (
    "log"

    "github.com/prometheus/procfs"
)

func main() {
    log.SetFlags(0)

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    var (
        fs  procfs.FS
        err error
    )
    fs, err = procfs.NewFS(procfs.DefaultMountPoint)
    if err != nil {
        return err
    }

    var (
        procs procfs.Procs // type Procs []Proc
    )
    procs, err = fs.AllProcs()
    if err != nil {
        return err
    }

    var (
        drop = func(v string, _ error) string { return v }
    )
    for i, p := range procs {
        log.Printf("[%02d] %7d: %s", i+1, p.PID, drop(p.Executable()))
    }

    return nil
}

実行結果

$ task
task: [default] rm -f ./app
task: [default] go build -o app .
task: [default] ./app
[01]       1: /.supervisor/supervisor
[02]      36: /.supervisor/supervisor
[03]      70: /usr/bin/dash
[04]      78: /ide/node
[05]      90: /usr/bin/bash
[06]     666: /ide/node
[07]    1286: /ide/node
[08]    1952: /ide/node
[09]    1977: /ide/node
[10]    2492: /ide/node
[11]    7471: /home/gitpod/go-packages/bin/gopls
[12]    7483: /home/gitpod/go-packages/bin/gopls
[13]   23327: /ide/node
[14]   42093: /home/gitpod/go-packages/bin/staticcheck
[15]   42113: /home/gitpod/go/bin/go
[16]   42122: /workspace/go/bin/task
[17]   42439: /workspace/try-golang/examples/procfs/allprocs/app

参考情報

try-golang/examples/procfs/allprocs at main · devlights/try-golang · GitHub

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。




以上の内容はhttps://devlights.hatenablog.com/entry/2025/05/20/073000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14