JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr 0iGdZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZdgZee dZee dZee dZe j:Ze j>Ze j@e jBe jDe jFe jHe jJe jLe jJe jNe jPiZ)e jTe jVe jXe jZe j\e j^e j`e jbe jde jfe jhe jje jle jne jpe jre jte jve jxe jze j|e j~e je ji ZBeCddddddddZDedddgZEeEZFed gd!ZGed"gd#ZHd$ZId%ZJd&ZKd'ZLd(ZMd)ZNd*ZOe jZPe jZQd5d+ZRe jZSer e jZTd6d,ZUd-ZVd.ZWd/ZXd0ZYd1ZZd2Z[Gd3d4Z\y)7zAIX platform implementation.N) namedtuple)_common)_psposix) _psutil_aix)NIC_DUPLEX_FULL)NIC_DUPLEX_HALF)NIC_DUPLEX_UNKNOWN) AccessDenied) NoSuchProcess) ZombieProcess)conn_to_ntuple)get_procfs_path)memoize_when_activated) usage_percent PROCFS_PATH proc_threadsnet_io_countersproc_io_counters)ppidrssvms create_timenice num_threadsstatusttynrpmemrr scputimes)usersystemidleiowaitsvmem)total availablepercentusedfreecvtj\}}}}}t||z |d}t|||||S)Nrround_)cext virtual_memrr*)r+availr/_pinnedinuser-s >/opt/hc_python/lib64/python3.12/site-packages/psutil/_psaix.pyvirtual_memoryr9es@)-)9)9);&E5$UU]U1=G wt 44ctj\}}}}||z }t||d}tj||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr1)r3swap_memrrsswap)r+r/sinsoutr.r-s r8 swap_memoryr@ksF!]]_E4d 4z"cpu_count_cores..s&N=Mahhszz223=M35rz command error ) subprocessPopenPIPE communicate returncode RuntimeErrorstrip splitlineslen)cmdprUrVmsg processorss r8cpu_count_coresrns 'CZ__Z__MA]]_NFFNff=MNNFF||q'x03**,J z? "d"r:cdtj\}}}}tj||||S)z*Return various CPU stats as a named tuple.)r3 cpu_statsr scpustats) ctx_switches interruptssoft_interruptssyscallss r8rprps3:>..:J7L*ox   j/8 r:cg}tj}|D]Q}|\}}}}|dk(rd}|st|js)t j ||||}|j |S|S)zReturn system disk partitions.none)r3disk_partitions disk_usager+r sdiskpartappend) allretlist partitions partitiondevice mountpointfstypeoptsntuples r8ryrys{G%%'J +4( FD V Fj)//""6:vtDv  Nr:c tj|\}}tj|}g}|D]E}|\}}} } } } } ||vr| |vrt ||| | | | t |dk(r| nd}|j |G|S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). Npid)r conn_tmapr3net_connectionsr TCP_STATUSESr|)kind_pidfamiliestypesrawlistrFitemfdfamtype_laddrraddrr"rnts r8rrs''-OHe""4(G C481Cufc h             rzt   2!" Jr:cttd}tDchc]}|d }}i}|D]"}tj|}tj |}d}d}t jdd|gt jt j} | j\} } d| | fD\} } | jdk(rCtjd| } | +t| jd }| jd }d j|} d |v}|j!|t"}t%j&||||| ||<%|Scc}w) z)Get NIC stats (isup, duplex, speed, mtu).)FullHalfrrxz/usr/bin/entstatz-drTc3nK|]-}|jtjj/ywrXrYr]s r8r_znet_if_stats..( 3CaAHHSZZ(( )3Cr`z"Running: (\d+) Mbps.*?(\w+) Duplexrr,running)rr net_if_addrsr3 net_if_mtu net_if_flagsrarbrcrdreresearchintgroupjoingetr r snicstats) duplex_maprGnamesrFnamemtuflagsduplexspeedrkrUrV re_result output_flagsisups r8 net_if_statsrsK)?CJ'> *>aQqT>E * Cood#!!$'     t ,????   4:F3C  <<1  5vI$IOOA./"+xx E!(:;%%dFE3 MD ;< JA +s Ec*tjS)z:The system boot time expressed in seconds since the epoch.)r3 boot_timerOr:r8rrs >> r:cg}tj}d}|D]>}|\}}}}}} |s||vrd}tj||||| } |j | @|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0 localhost)r3usersrsuserr|) r~rrrr&ttyhostnametstamp user_processrrs r8rrsqGjjlGI9=6c8V\3  y "H ]]4h <r Nr:ctjtDcgc]}|jst | c}Scc}w)z7Returns a list of PIDs currently running on the system.)rLlistdirrisdigitr)rGs r8pidsr-s4JJ'89 I9qQYY[CF9 II Is A Actjjtjjt t |dS)z&Check for the existence of a unix pid.psinfo)rLpathexistsrrstrrs r8 pid_existsr2s- 77>>"'',,'8#c(HM NNr:cBtjfd}|S)zCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c|j|j|j}}} |g|i|S#ttf$r+}t |s t |||t||||d}~wt$r}t|||d}~wwxYwrX) r_ppid_nameFileNotFoundErrorProcessLookupErrorrr r PermissionErrorr )selfargskwargsrrrerrfuns r8wrapperz wrap_exceptions..wrapper<s((DJJ 4T 3t-d-f- -!#56 :c?#C.C7T40c 9 3sD)s 2 3s! 3B&A(( B4 BB) functoolswraps)rrs` r8wrap_exceptionsr7s' __S 3 3 Nr:ceZdZdZgdZdZdZdZee dZ ee dZ edZ ed Z ed Zed Zed Zed ZeredZed dZedZedZedZedZedZedZedZedZedZeZedZdZ edZ!edZ"ed!dZ#e$r edZ%yy)"Processz1Wrapper class around underlying C implementation.)_cacherr _procfs_pathrcL||_d|_d|_t|_yrX)rrrrr)rrs r8__init__zProcess.__init__Ss"  +-r:cp|jj||jj|yrX)_proc_basic_infocache_activate _proc_credrs r8 oneshot_enterzProcess.oneshot_enterYs( ,,T2 &&t,r:cp|jj||jj|yrX)rcache_deactivaterrs r8 oneshot_exitzProcess.oneshot_exit]s( ..t4 ((.r:cVtj|j|jSrX)r3proc_basic_inforrrs r8rzProcess._proc_basic_infoas!##DHHd.?.?@@r:cVtj|j|jSrX)r3 proc_credrrrs r8rzProcess._proc_credfs~~dhh(9(9::r:c|jdk(rytj|j|jj dS)Nrswapper)rr3 proc_namerrstriprs r8rz Process.nameks6 88q=~~dhh(9(9:AA&IIr:c|j}|sy|d}tjj|vrtjj |sKtjj tjj |j|}tjj |rEtjj|r&tj|tjr|Stjj|}tjdjdD]}tjj tjj ||}tjj|s`tj|tjs|cSy)NrxrPATH:)cmdlinerLrsepisabsabspathrcwdisfileaccessX_OKbasenameenvironsplit)rrexer possible_exes r8rz Process.exers ,,.aj 77;;# 77==%ggoobggll488:s&CD c"GGNN3'IIc277+ ''""3'CJJv&,,S1D77??277<<c+BCLww~~l+ bgg1$# 2 r:c@tj|jSrX)r3 proc_argsrrs r8rzProcess.cmdlines~~dhh''r:c@tj|jSrX)r3 proc_environrrs r8rzProcess.environs  **r:c6|jtdS)Nrr proc_info_maprs r8rzProcess.create_time$$&}]'CDDr:c6|jtdS)Nr!rrs r8r!zProcess.num_threadsrr:ctj|j}g}|D].\}}}tj|||}|j |0|s.t j|jd|j|S)N/) r3rrrpthreadr|rLstatr)rrr~ thread_idutimestimers r8threadszProcess.threadssv''1GG+2' 5% E5Av&,34,,-Qtxxj9:Nr:ct||j}|s.tj|jd|j|S)N)rr )rrrLr r)rrrFs r8rzProcess.net_connectionss>d2  GGt(()488*5 6 r:c@tj|jSrX)r3proc_priority_getrrs r8nice_getzProcess.nice_gets%%dhh//r:cBtj|j|SrX)r3proc_priority_setr)rvalues r8nice_setzProcess.nice_sets%%dhh66r:cX|jtd|_|jS)Nr)rrrrs r8rz Process.ppids&**,]6-BC zzr:c^|j\}}}}}}tj|||SrXrrpuids)rreal effectivesaved_s r8uidsz Process.uidss.*.//*;'i1a}}T9e44r:c^|j\}}}}}}tj|||SrXr)rr!rrr s r8gidsz Process.gidss.*.//*;'1ay%}}T9e44r:cztj|j|j}t j |SrX)r3proc_cpu_timesrrr pcputimes)rts r8rHzProcess.cpu_timess/   $*;*; <  !$$r:c|jtd}|dzdz |dzz}tjdD](}tj|j |k(s&|cSy)Nr#liz /dev/**/*)rrglobrLr st_rdev)rttydevdevs r8terminalzProcess.terminalsf&&(w)?@..25&6/J99[)Cwws|##v- *r:c|j} tj|d|jd}|j dS#t $r'tj |d|jYywxYw)Nr z/cwdrx)rrLreadlinkrrrr )r procfs_pathresults r8rz Process.cwdsm''  [[K=$((4!@AF==% %   GG{m1TXXJ/ 0 s5A-A43A4cv|j}|tddz}|tddz}t||S)Nrir)rrr$)rrFrrs r8 memory_infozProcess.memory_infosD##%-&'$.-&'$.C~r:cb|jtd}tj|dS)Nr"?)rr PROC_STATUSESr)rcodes r8r"zProcess.statuss-$$&}X'>?  s++r:c Ttjddt|jgtjtj}|j \}}d||fD\}}d|j vr t|j|jtjd|}g}|D]m\}}|j}|jdr|dd}|j d k(r@|jtj|t!|o|S) Nz/usr/bin/procfilesz-nrTc3nK|]-}|jtjj/ywrXrYr]s r8r_z%Process.open_files.. rr`zno such processz(\d+): S_IFREG.*name:(.*)\nz//rzcannot be retrieved)rarbrrrcrdlowerr rrfindallrg startswithr|r popenfiler)rrkrUrV procfilesr~rrs r8 open_fileszProcess.open_filess    !4TXX 7????   4:F3C    .$**5 5JJ=vF !HB:: B7A>>B)inetrX)&__name__ __module__ __qualname____doc__ __slots__rrrrrrrrrrrrr! HAS_THREADSrrrrrr"r$rHr/rr5memory_full_infor"rArCrGrKHAS_PROC_IO_COUNTERSrSrOr:r8rrNs-;CI. -/AA;;JJ :((++EEEE       00775555%% #,, 2EE EE@@  /  /r:r)F)r)]rXrr+rLrrar[ collectionsrrxrrrr3rr r r r r rrrr__extra__all__hasattrrZHAS_NET_IO_COUNTERSr\ getpagesize PAGE_SIZEAF_LINKSIDL STATUS_IDLESZOMB STATUS_ZOMBIESACTIVESTATUS_RUNNINGSSWAPSSTOPSTATUS_STOPPEDr8TCPS_ESTABLISHEDCONN_ESTABLISHED TCPS_SYN_SENT CONN_SYN_SENT TCPS_SYN_RCVD CONN_SYN_RECVTCPS_FIN_WAIT_1CONN_FIN_WAIT1TCPS_FIN_WAIT_2CONN_FIN_WAIT2TCPS_TIME_WAITCONN_TIME_WAIT TCPS_CLOSED CONN_CLOSETCPS_CLOSE_WAITCONN_CLOSE_WAIT TCPS_LAST_ACK CONN_LAST_ACK TCPS_LISTEN CONN_LISTEN TCPS_CLOSING CONN_CLOSINGPSUTIL_CONN_NONE CONN_NONErdictrr$pfullmemr%r*r9r@rHrBrPrnrpdisk_io_countersrzryrrrrrrrrrrrOr:r8rs#  "!$$'!""#$+"dN+ d$56t%78 D    ,, IIw""JJ%%LL'((JJ&&JJ&&   733----'00'00//g(('11--g))w++7,,         $&5%.)  {$H I 7MN5 @3 (  #((  4  **O6#V 0J O .e/e/r: