Go 言語では、プロセス情報の取得 (プロセス ID、名前、ステータス)、プロセスの起動と終了 (子プロセスの起動と終了)、リソース監視 (メモリと CPU の使用量) の 3 つのプロセス監視方法が提供されます。これらの方法を使用すると、特定のサービス、システム リソースの使用状況を監視し、異常終了したプロセスを自動的に再起動して、安定したシステム動作を確保できます。
Go プロセス監視: システムの安定した動作の確保
はじめに
プロセス監視システムの安定稼働を確保するためには重要です。これは、潜在的な問題を適時に検出して解決し、システムのクラッシュやデータ損失を防ぐのに役立ちます。 Go 言語にはプロセス監視用の豊富なライブラリが用意されており、この記事ではよく使用される 3 つの方法を紹介します。
プロセス情報の取得
package main import ( "context" "fmt" "os" "os/exec" "time" ) func main() { // 获取当前进程的 ID pid := os.Getpid() fmt.Println("Current process ID:", pid) // 获取进程的名 name := exec.Command("ps", "-p", fmt.Sprintf("%d", pid)).Output() fmt.Println("Process name:", string(name)) // 获取进程的状态 stats, err := os.FindProcess(pid) if err != nil { fmt.Println("Error getting process stats:", err) } fmt.Println("Process state:", stats.State()) }
プロセスの起動と終了
package main import ( "context" "errors" "fmt" "os" "os/exec" "time" ) func main() { // 启动一个子进程 cmd := exec.Command("ping", "www.example.com") err := cmd.Start() if err != nil { fmt.Println("Error starting process:", err) } // 等待进程运行 5 秒 time.Sleep(5 * time.Second) // 终止进程 cmd.Process.Kill() }
リソース監視
package main import ( "context" "errors" "fmt" "os" "os/exec" "runtime" "time" ) func main() { // 获取进程的内存和 CPU 使用情况 var mem runtime.MemStats runtime.ReadMemStats(&mem) fmt.Println("Memory usage:", mem.Alloc/1024/1024, "MB") var cpu runtime.CPUProfile runtime.CPUProfile(func() { time.Sleep(1 * time.Second) }, &cpu) fmt.Println("CPU usage:", len(cpu.Labels)) }
実際的なケース
これらのメソッドは、次のシナリオでプロセス監視に使用できます。
#結論
この記事で紹介した Go プロセス監視方法を通じて、システム プロセスを効果的に監視および管理し、システムが安定して確実に実行されることを確認できます。 。以上がGolang プロセス監視: 安定したシステム動作を確保の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。