JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB =_c@sLdZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddl m Zdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlm Z ddlm!Z!dddgZ"e#Z$ej%Z%ej&dkZ'dZ(dZ)ej*e j+ej,e j-ej.e j/ej0e j1ej2e j3ej4e j-ej5e j6iZ7ej8e j9ej:e j;eje j?ej@e jAejBe jCejDe jEejFe jGejHe jIejJe jKejLe jMejNe jOejPe(ejQe)iZReSddd d!d"d#d$d%d&d'd(d)d* ZTed+d,d-d.d/gZUed0d,d-d1d2gZVed3d4d5d6d7d8gZWed9d:d;gZXeXZYedd?gZZed@dAdB[eZj\Z]dCdDZ^dEdFZ_dGdHZ`dIdJZadKdLZbdMdNZcdOdPZdejeZee jfZfdedRdSZgejhZhejiZidfdUdVZjdWdXZkdYdZZld[d\Zmd]d^Znd_d`ZodadbZpGdcddddeqZrdS)gz'Sun OS Solaris platform implementation.N) namedtuple)AF_INET)_common)_psposix) _psutil_posix) _psutil_sunos) AccessDenied)AF_INET6)debug)get_procfs_path) isfile_strict)memoize_when_activated) NoSuchProcess)sockfam_to_enum)socktype_to_enum) usage_percent) ZombieProcess)b)FileNotFoundError)PermissionError)ProcessLookupError)PY3 CONN_IDLE CONN_BOUND PROCFS_PATHlZIDLEZBOUND ) ppidrssvms create_timenice num_threadsstatusttynruideuidgidegid scputimesusersystemidleZiowait pcputimes children_userchildren_systemsvmemtotalZ availablepercentusedfreepmemr'r( pmmap_groupedpathZ anonymouslocked pmmap_extz addr perms  cCsFtdt}tdt}}||}t||dd}t|||||S)zReport virtual memory metrics. SC_PHYS_PAGESSC_AVPHYS_PAGESr)round_)ossysconf PAGE_SIZErr9)r:r=Zavailr<r;rJB/opt/alt/python37/lib64/python3.7/site-packages/psutil/_pssunos.pyvirtual_memory{s rLc Cst\}}tjddtjdddgtjd}|\}}trL| t j j }|j dkrdtd|j |d d d }|std d}}xL|D]D}|}|d d\} } |tt| d7}|tt| d7}qW||} t| |d d} t|| || |t|tS)zReport swap memory metrics.z /usr/bin/envzPATH=/usr/sbin:/sbin:%sPATHZswapz-l)stdoutrz'swap -l' failed (retcode=%s) rNzno swap device(s) configuredrri)rF)cextZswap_mem subprocessPopenrGenvironPIPE communicaterdecodesysrNencoding returncode RuntimeErrorstripsplitintrrsswaprI) sinsoutprNstderrlinesr:r=linetfr<r;rJrJrK swap_memorys,      rgcCst}tddt|DS)z-Return system-wide CPU times as a named tuplecSsg|] }t|qSrJ)sum).0xrJrJrK szcpu_times..)rP per_cpu_timesr2zip)retrJrJrK cpu_timessrocCst}dd|DS)z5Return system per-CPU times as a list of named tuplescSsg|] }t|qSrJ)r2)rirjrJrJrKrksz!per_cpu_times..)rPrl)rnrJrJrKrlsrlcCs$y tdStk rdSXdS)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)rGrH ValueErrorrJrJrJrKcpu_count_logicals rrcCstS)z1Return the number of physical CPUs in the system.)rPZcpu_count_physrJrJrJrKcpu_count_physicalsrscCs$t\}}}}d}t||||S)z*Return various CPU stats as a named tuple.r)rP cpu_statsr scpustats) ctx_switches interruptssyscallsZtrapssoft_interruptsrJrJrKrts rtFc Csg}t}x|D]}|\}}}}|dkr.d}|sxyt|js@wWn4tk rv}ztd||fwWdd}~XYnXd} } t||||| | } || qW|S)zReturn system disk partitions.Znonezskipping %r: %rN) rPdisk_partitions disk_usager:OSErrorr r sdiskpartappend) allretlist partitions partitiondevice mountpointfstypeoptserrmaxfilemaxpathZntuplerJrJrKr{s$    r{c Cstj}|dkr|dd||krFtd|ddd|Dftj|\}}t|}t}x|D]}|\}} } } } } }| |krqj| |krqj| t t fkr| rtj | } | rtj | } t | } t | } t| } |dkrt|| | | | | |}nt|| | | | | }||qjWt|S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). Only INET sockets are returned (UNIX are not). runixrz+invalid %r kind argument; choose between %sz, cSsg|] }t|qSrJ)repr)rirjrJrJrKrksz#net_connections..)r conn_tmapcopypoprqjoinrPnet_connectionssetrr addr TCP_STATUSESrrsconnpconnaddlist)kind_pidZcmapZfamiliestypesrawlistrnitemfdfamtype_laddrraddrr,pidntrJrJrKrs8       rcCsVt}xH|D]<\}}|\}}}}ttdr:t|}t||||||<qW|S)z)Get NIC stats (isup, duplex, speed, mtu). NicDuplex)rP net_if_statsitemshasattrrr snicstats)rnnamerisupduplexspeedmturJrJrKr!s   rcCstS)z:The system boot time expressed in seconds since the epoch.)rP boot_timerJrJrJrKr1src Cs`g}t}d}xJ|D]B}|\}}}}}} |s0q||kr.)rGlistdirrr rJrJrJrKpidsNsrcCs t|S)z&Check for the existence of a unix pid.)r pid_exists)rrJrJrKrSsrcstfdd}|S)zCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c sy|f||Sttfk rTt|js>t|j|jnt|j|j|jYn\tk rtt |j|jYn<t k r|jdkrdt krt |j|jnYnXdS)Nr) rrrrr_namer_ppidrr r}r)selfargskwargs)funrJrKwrapper\s   z wrap_exceptions..wrapper) functoolswraps)rrrJ)rrKwrap_exceptionsXsrc@seZdZdZdddddgZddZd d Zd d Zd dZe e ddZ e e ddZ e e ddZ e ddZe ddZe ddZe ddZe ddZe dd Ze d!d"Ze d#d$Ze d%d&Ze d'd(Ze d)d*Ze d+d,Ze d-d.Ze d/d0Ze d1d2Ze d3d4ZeZe d5d6Ze d7d8Z e d9d:Z!d;d<Z"e dLd>d?Z#e$d@dAZ%e$d@dBZ&e dCdDZ'e dEdFZ(e dGdHZ)e dMdJdKZ*dIS)NProcessz1Wrapper class around underlying C implementation.rrr _procfs_path_cachecCs||_d|_d|_t|_dS)N)rrrr r)rrrJrJrK__init__yszProcess.__init__cCstd|j|jfdS)z+Raise NSP if the process disappeared on us.z%s/%sN)rGstatrr)rrJrJrK _assert_aliveszProcess._assert_alivecCs(|j||j||j|dS)N)_proc_name_and_argscache_activate_proc_basic_info _proc_cred)rrJrJrK oneshot_enters  zProcess.oneshot_entercCs(|j||j||j|dS)N)rcache_deactivaterr)rrJrJrK oneshot_exits  zProcess.oneshot_exitcCst|j|jS)N)rPZproc_name_and_argsrr)rrJrJrKrszProcess._proc_name_and_argscCsT|jdkr,tjd|j|jfs,t|jt|j|j}t|tt ksPt |S)Nrz %s/%s/psinfo) rrGr@existsrr rPZproc_basic_infolen proc_info_mapAssertionError)rrnrJrJrKrs   zProcess._proc_basic_infocCst|j|jS)N)rPZ proc_credrr)rrJrJrKrszProcess._proc_credcCs |dS)Nr)r)rrJrJrKrsz Process.namecCs8ytd|j|jfStk r*YnX|dS)Nz%s/%s/path/a.outrz)rGreadlinkrrr}cmdline)rrJrJrKexesz Process.execCs|ddS)NrrC)rr\)rrJrJrKrszProcess.cmdlinecCst|j|jS)N)rPZ proc_environrr)rrJrJrKrSszProcess.environcCs|tdS)Nr))rr)rrJrJrKr)szProcess.create_timecCs|tdS)Nr+)rr)rrJrJrKr+szProcess.num_threadscCs|tdS)Nr*)rr)rrJrJrKnice_getszProcess.nice_getcCs&|jdkrt|j|jt|j|S)N)rr)rr r cext_posix setpriority)rvaluerJrJrKnice_sets zProcess.nice_setcCs|td|_|jS)Nr&)rrr)rrJrJrKr&sz Process.ppidcCs`y|\}}}}}}Wn8tk rP|td}|td}d}YnXt|||S)Nr.r/)rr rrrpuids)rreal effectivesaved_rJrJrKuidss z Process.uidscCs`y|\}}}}}}Wn8tk rP|td}|td}d}YnXt|||S)Nr0r1)rr rrrr)rrrrrrJrJrKgidss z Process.gidsc CsZyt|j|j}Wn:tk rN}z|jtjkrdD]6}ytd||j|fSt k rbd}w.Yq.Xq.W|rt| dS)NFr-)rrrz %s/%d/path/%dT) rrrrrPZPRNODEVrGrrrr)r procfs_path hit_enoentrrjrJrJrKterminals   zProcess.terminalcCsH|j}ytd||jfStk rBtd||jfdSXdS)Nz%s/%s/path/cwdz%s/%s)rrGrrrr)rrrJrJrKcwds z Process.cwdcCs2|}|tdd}|tdd}t||S)Nr'ir()rrr>)rrnr'r(rJrJrK memory_info#szProcess.memory_infocCs|td}t|dS)Nr,?)rr PROC_STATUSESget)rcoderJrJrKr,,szProcess.statusc Cs|j}g}td||jf}d}x|D]}t|}yt|j||\}}WnHtk r}z*|jtj krpt spw(|jtj krd}w(Wdd}~XYq(Xt |||} || q(W|r||S)Nz %s/%d/lwpFT)rrGrrr]rPZquery_process_threadEnvironmentErrorrrrENOENTrpthreadrr) rrrnZtidsrtidutimeZstimerrrJrJrKthreads2s*  zProcess.threadsc Csg}d}|j}d||jf}x~td||jfD]f}tj||}tj|r2yt|}Wntk rxd}w2Yq2Xt |r2| t |t |q2W|r||S)NFz %s/%d/pathz%s/%d/fdT)rrrGrr@rislinkrrr rr popenfiler]r)rrrrZpathdirrr@filerJrJrK open_filesSs" zProcess.open_filesc cs,d|}tj|dtjtjd}|\}}trDdd||fD\}}|jdkrd|krht|j|j d|krt |j|j t d ||f| d d d }xt |D]v\}}|}|d r| dd d } ||d } | dkrtj} n| dkr tj} nd} dtj| | dtjfVqWd S)z.rzpermission deniedzno such processz%r command error %srOrNzsockname: AF_UNIXrC SOCK_STREAM SOCK_DGRAMrrz)rQrRrTrUrrYlowerr rrrrZr\ enumeratelstrip startswithr[socketrrAF_UNIXr CONN_NONE) rrcmdrarNrbrcirdr@typerJrJrK_get_unix_socketshs2        zProcess._get_unix_socketsinetcCsPt||jd}|s(td|j|jf|dkrL|dd||jD|S)N)rz%s/%s)rrcSsg|]}tj|qSrJ)rr)riZconnrJrJrKrksz'Process.connections..)rrrGrrextendr )rrrnrJrJrK connectionss zProcess.connectionsZmmapzpath rss anon lockedzaddr perms path rss anon lockedc Cs dd}|j}g}yt|j|}Wn8tk r\}z|jtjkrJtsJgSWdd}~XYnXd}x|D]}|\}} } } } } }||| }| dsyt d||j| f} WnFtk r}z(|jtj krd||j| f} d}nWdd}~XYnX| || | | | |fqhW|r| |S)NcSs0dt|dddt|dddfS)Nz%s-%srL)hexr[)startendrJrJrKtoaddrsz#Process.memory_maps..toaddrF[z %s/%s/path/%sT)rrPZproc_memory_mapsrr}rrrrrGrrrr)rrrrrrrrrZaddrsizeZpermrr'ZanonrArJrJrK memory_mapss4    zProcess.memory_mapscCsttd|j|jfS)Nz%s/%s/fd)rrGrrr)rrJrJrKnum_fdsszProcess.num_fdscCstjt|j|jS)N)rpctxswrPZproc_num_ctx_switchesrr)rrJrJrKnum_ctx_switchesszProcess.num_ctx_switchesNcCst|j||jS)N)rZwait_pidrr)rtimeoutrJrJrKwaitsz Process.wait)r )N)+__name__ __module__ __qualname____doc__ __slots__rrrrrrrrrrrrrSr)r+rrr&rrrorrrrZmemory_full_infor,rrr r rZnt_mmap_groupedZ nt_mmap_extrrrrrJrJrJrKrtsT              !      /  r)F)r)srrrrGrrQrW collectionsrrrzrrrrrrPr r r r r rrrrrr_compatrrrrrZ__extra__all__Z getpagesizerIZAF_LINKmaxsizerrrZSSLEEPSTATUS_SLEEPINGZSRUNSTATUS_RUNNINGZSZOMB STATUS_ZOMBIEZSSTOPSTATUS_STOPPEDZSIDL STATUS_IDLEZSONPROCZSWAITSTATUS_WAITINGrZTCPS_ESTABLISHEDCONN_ESTABLISHEDZ TCPS_SYN_SENT CONN_SYN_SENTZ TCPS_SYN_RCVD CONN_SYN_RECVZTCPS_FIN_WAIT_1CONN_FIN_WAIT1ZTCPS_FIN_WAIT_2CONN_FIN_WAIT2ZTCPS_TIME_WAITCONN_TIME_WAITZ TCPS_CLOSED CONN_CLOSEZTCPS_CLOSE_WAITCONN_CLOSE_WAITZ TCPS_LAST_ACK CONN_LAST_ACKZ TCPS_LISTEN CONN_LISTENZ TCPS_CLOSING CONN_CLOSINGZPSUTIL_CONN_NONErZ TCPS_IDLEZ TCPS_BOUNDrdictrr2r6r9r>Zpfullmemr?r_fieldsrBrLrgrorlrrrsrtZdisk_io_countersr|r{Znet_io_countersZ net_if_addrsrrrrrrrobjectrrJrJrJrKs                            &   ! %