oneuptime/InfrastructureAgent/utils/procs.go

41 lines
845 B
Go

package utils
import (
"log/slog"
"oneuptime-infrastructure-agent/model"
"github.com/shirou/gopsutil/v3/process"
)
// getServerProcesses retrieves the list of server processes
func GetServerProcesses() []*model.ServerProcess {
var serverProcesses []*model.ServerProcess
// Fetch all processes
processList, err := process.Processes()
if err != nil {
slog.Error("Failed to fetch process list", err)
return nil
}
// Iterate over all processes and collect details
for _, p := range processList {
name, err := p.Name()
if err != nil {
continue // skip processes where details cannot be retrieved
}
cmdline, err := p.Cmdline()
if err != nil {
continue
}
serverProcesses = append(serverProcesses, &model.ServerProcess{
Pid: p.Pid,
Name: name,
Command: cmdline,
})
}
return serverProcesses
}