@name 获取进程信息 @author hwliang<2021-08-12> @param pid: int<进程id> @return dict
(self, pid)
| 2237 | return result |
| 2238 | |
| 2239 | def get_process_info_by_pid(self, pid): |
| 2240 | ''' |
| 2241 | @name 获取进程信息 |
| 2242 | @author hwliang<2021-08-12> |
| 2243 | @param pid: int<进程id> |
| 2244 | @return dict |
| 2245 | ''' |
| 2246 | process_info = {} |
| 2247 | try: |
| 2248 | if not os.path.exists('/proc/{}'.format(pid)): return process_info |
| 2249 | p = psutil.Process(pid) |
| 2250 | status_ps = {'sleeping': '睡眠', 'running': '活动'} |
| 2251 | with p.oneshot(): |
| 2252 | p_mem = p.memory_full_info() |
| 2253 | if p_mem.uss + p_mem.rss + p_mem.pss + p_mem.data == 0: return process_info |
| 2254 | p_state = p.status() |
| 2255 | if p_state in status_ps: p_state = status_ps[p_state] |
| 2256 | # process_info['exe'] = p.exe() |
| 2257 | process_info['name'] = p.name() |
| 2258 | process_info['pid'] = pid |
| 2259 | process_info['ppid'] = p.ppid() |
| 2260 | process_info['create_time'] = int(p.create_time()) |
| 2261 | process_info['status'] = p_state |
| 2262 | process_info['user'] = p.username() |
| 2263 | process_info['memory_used'] = p_mem.uss |
| 2264 | process_info['cpu_percent'] = self.get_cpu_precent(p) |
| 2265 | try: |
| 2266 | process_info['io_write_bytes'], process_info['io_read_bytes'] = p.io_counters() |
| 2267 | except: |
| 2268 | process_info['io_write_bytes'], process_info['io_read_bytes'] = 0, 0 |
| 2269 | process_info['connections'] = self.format_connections(p.connections()) |
| 2270 | process_info['connects'] = self.get_connects(pid) |
| 2271 | process_info['open_files'] = self.list_to_dict(p.open_files()) |
| 2272 | process_info['threads'] = p.num_threads() |
| 2273 | process_info['exe'] = ' '.join(p.cmdline()) |
| 2274 | return process_info |
| 2275 | except: |
| 2276 | return process_info |
| 2277 | |
| 2278 | def get_io_speed(self, p): |
| 2279 | ''' |
no test coverage detected