63 lines
1.4 KiB
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
|
|
}
|