関連記事
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.NewDefaultFS() // デフォルトは /proc を見ている if err != nil { return err } var ( mem procfs.Meminfo ) mem, err = fs.Meminfo() if err != nil { return err } var ( memTotal = *mem.MemTotal // システムに搭載されている物理メモリ(RAM)の総量をkB単位 memTotalBytes = *mem.MemTotalBytes // システムに搭載されている物理メモリ(RAM)の総量をバイト単位 freeTotal = *mem.MemFree // 空き容量をKB表示 freeTotalBytes = *mem.MemFreeBytes // 空き容量をバイト単位 availTotal = *mem.MemAvailable // 利用可能容量をKB表示 availTotalBytes = *mem.MemAvailableBytes // 利用可能容量をバイト単位 toMB = func(v uint64) uint64 { return v >> 20 } ) log.Printf("MemTotal=%dKB(%dMB), Free=%dKB(%dMB), Avail=%dKB(%dMB)", memTotal, toMB(memTotalBytes), freeTotal, toMB(freeTotalBytes), availTotal, toMB(availTotalBytes)) return nil }
実行結果
$ task task: [clean] rm -f ./app task: [build] go build -o app . task: [run] free | head -n 2 total used free shared buff/cache available Mem: 65841080 18350600 6361292 129440 41129188 46633780 task: [run] ./app MemTotal=65841080KB(64297MB), Free=6358804KB(6209MB)
参考情報
try-golang/examples/procfs/meminfo at main · devlights/try-golang · GitHub
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。