@name 获取进程信息 @author hwliang<2021-08-12> @param pid: int<进程id> @return dict
(self,pid)
| 1859 | |
| 1860 | |
| 1861 | def get_process_info_by_pid(self,pid): |
| 1862 | ''' |
| 1863 | @name 获取进程信息 |
| 1864 | @author hwliang<2021-08-12> |
| 1865 | @param pid: int<进程id> |
| 1866 | @return dict |
| 1867 | ''' |
| 1868 | process_info = {} |
| 1869 | try: |
| 1870 | if not os.path.exists('/proc/{}'.format(pid)): return process_info |
| 1871 | p = psutil.Process(pid) |
| 1872 | status_ps = {'sleeping':'睡眠','running':'活动'} |
| 1873 | with p.oneshot(): |
| 1874 | p_mem = p.memory_full_info() |
| 1875 | if p_mem.uss + p_mem.rss + p_mem.pss + p_mem.data == 0: return process_info |
| 1876 | p_state = p.status() |
| 1877 | if p_state in status_ps: p_state = status_ps[p_state] |
| 1878 | # process_info['exe'] = p.exe() |
| 1879 | process_info['name'] = p.name() |
| 1880 | process_info['pid'] = pid |
| 1881 | process_info['ppid'] = p.ppid() |
| 1882 | process_info['create_time'] = int(p.create_time()) |
| 1883 | process_info['status'] = p_state |
| 1884 | process_info['user'] = p.username() |
| 1885 | process_info['memory_used'] = p_mem.uss |
| 1886 | process_info['cpu_percent'] = self.get_cpu_precent(p) |
| 1887 | process_info['io_write_bytes'],process_info['io_read_bytes'] = self.get_io_speed(p) |
| 1888 | process_info['connections'] = self.format_connections(p.connections()) |
| 1889 | process_info['connects'] = self.get_connects(pid) |
| 1890 | process_info['open_files'] = self.list_to_dict(p.open_files()) |
| 1891 | process_info['threads'] = p.num_threads() |
| 1892 | process_info['exe'] = ' '.join(p.cmdline()) |
| 1893 | return process_info |
| 1894 | except: |
| 1895 | return process_info |
| 1896 | |
| 1897 | |
| 1898 | def get_io_speed(self,p): |
no test coverage detected