system/processus.go

63 lines
1.4 KiB
Go

package system
import (
"strconv"
"github.com/shirou/gopsutil/v3/process"
)
type Processus struct {
User string `json:"user"`
Pid int32 `json:"pid"`
Cpu float64 `json:"cpu"`
Mem float32 `json:"mem"`
Name string `json:"name"`
Status []string `json:"status"`
}
// Get1Processus : récupération d'un processus
func Get1Processus(id string) (Processus, error) {
i, err := strconv.ParseInt(id, 10, 32)
if err != nil {
return Processus{}, err
}
processes, err := process.Processes()
if err != nil {
return Processus{}, err
}
var ps Processus
for _, process := range processes {
if int32(i) == process.Pid {
ps.User, _ = process.Username()
ps.Pid = process.Pid
ps.Cpu, _ = process.CPUPercent()
ps.Mem, _ = process.MemoryPercent()
ps.Name, _ = process.Name()
ps.Status, _ = process.Status()
break
}
}
return ps, nil
}
// GetProcessus : récupération des processus
func GetProcessus() ([]Processus, error) {
processes, err := process.Processes()
if err != nil {
return []Processus{}, err
}
var pslist []Processus
for _, process := range processes {
var ps Processus
ps.User, _ = process.Username()
ps.Pid = process.Pid
ps.Cpu, _ = process.CPUPercent()
ps.Mem, _ = process.MemoryPercent()
ps.Name, _ = process.Name()
ps.Status, _ = process.Status()
pslist = append(pslist, ps)
}
return pslist, nil
}