関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
Linux上でCPUやメモリやプロセスの情報を取得したりして処理する必要があったので、ちょっとライブラリを探してみたら
という便利なライブラリが見つかりました。/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のおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。