(proc *process.Process, processConfig *PsProcessConfig, pidConnections map[int32][]net.ConnectionStat)
| 158 | } |
| 159 | |
| 160 | func handleProcessData(proc *process.Process, processConfig *PsProcessConfig, pidConnections map[int32][]net.ConnectionStat) *PsProcessData { |
| 161 | if processConfig.Pid > 0 && processConfig.Pid != proc.Pid { |
| 162 | return nil |
| 163 | } |
| 164 | procData := PsProcessData{ |
| 165 | PID: proc.Pid, |
| 166 | } |
| 167 | if procName, err := proc.Name(); err == nil { |
| 168 | procData.Name = procName |
| 169 | } else { |
| 170 | procData.Name = "<UNKNOWN>" |
| 171 | } |
| 172 | if processConfig.Name != "" && !strings.Contains(procData.Name, processConfig.Name) { |
| 173 | return nil |
| 174 | } |
| 175 | if username, err := proc.Username(); err == nil { |
| 176 | procData.Username = username |
| 177 | } |
| 178 | if processConfig.Username != "" && !strings.Contains(procData.Username, processConfig.Username) { |
| 179 | return nil |
| 180 | } |
| 181 | procData.PPID, _ = proc.Ppid() |
| 182 | statusArray, _ := proc.Status() |
| 183 | if len(statusArray) > 0 { |
| 184 | procData.Status = strings.Join(statusArray, ",") |
| 185 | } |
| 186 | createTime, procErr := proc.CreateTime() |
| 187 | if procErr == nil { |
| 188 | t := time.Unix(createTime/1000, 0) |
| 189 | procData.StartTime = t.Format("2006-1-2 15:04:05") |
| 190 | } |
| 191 | procData.NumThreads, _ = proc.NumThreads() |
| 192 | procData.CpuValue, _ = proc.CPUPercent() |
| 193 | procData.CpuPercent = fmt.Sprintf("%.2f%%", procData.CpuValue) |
| 194 | |
| 195 | if memInfo, err := proc.MemoryInfo(); err == nil { |
| 196 | procData.RssValue = memInfo.RSS |
| 197 | procData.Rss = common.FormatBytes(memInfo.RSS) |
| 198 | } else { |
| 199 | procData.RssValue = 0 |
| 200 | } |
| 201 | |
| 202 | if connections, ok := pidConnections[proc.Pid]; ok { |
| 203 | procData.NumConnections = len(connections) |
| 204 | } |
| 205 | |
| 206 | return &procData |
| 207 | } |
| 208 | |
| 209 | func getProcessData(processConfig PsProcessConfig) (res []byte, err error) { |
| 210 | ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout) |
no test coverage detected