categraf/inputs/procstat/native_finder_notwindows.go

31 lines
569 B
Go

//go:build !windows
// +build !windows
package procstat
import (
"strings"
)
// Pattern matches on the process name
func (pg *NativeFinder) Pattern(pattern string) ([]PID, error) {
var pids []PID
procs, err := pg.FastProcessList()
if err != nil {
return pids, err
}
for _, p := range procs {
name, err := p.Exe()
if err != nil {
//skip, this can be caused by the pid no longer existing
//or you having no permissions to access it
continue
}
if strings.Contains(name, pattern) {
pids = append(pids, PID(p.Pid))
}
}
return pids, err
}