golang获取linux的进程信息
时间: 2024-01-08 18:03:24 浏览: 366
要在Go语言中获取Linux系统的进程信息,可以使用`os/exec`和`syscall`包来执行系统命令和调用系统函数。
以下是一个简单的示例代码,演示如何获取进程的PID、进程名和进程状态:
```go
package main
import (
"fmt"
"os/exec"
"strings"
"syscall"
)
func main() {
cmd := exec.Command("ps", "-eo", "pid,comm,state")
output, err := cmd.Output()
if err != nil {
fmt.Println("执行命令失败:", err)
return
}
lines := strings.Split(string(output), "\n")
for _, line := range lines[1:] {
fields := strings.Fields(line)
if len(fields) >= 3 {
pid := fields[0]
name := fields[1]
state := fields[2]
fmt.Printf("PID: %s, Name: %s, State: %s\n", pid, name, state)
}
}
}
```
在上面的示例中,我们使用`ps`命令来获取进程信息,通过`-eo`参数指定输出格式为PID、进程名和进程状态。然后,我们使用`exec.Command`创建一个命令对象,并调用`Output()`方法来执行命令并获取输出结果。
然后,我们将输出结果按行分割,并逐行解析得到每个进程的PID、进程名和进程状态。最后,将这些信息打印出来。
请注意,这只是一个简单的示例,如果你需要更详细的进程信息,可能需要使用更高级的库或调用系统函数来实现。
阅读全文