iFdZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZdgZee dZee dZee dZe jZe jZe j ej!e j"ej#e j$ej%e j&ej%e j'ej(iZ)e j*ej+e j,ej-e j.ej/e j0ej1e j2ej3e j4ej5e j6ej7e j8ej9e j:ej;e j<ej=e j>ej?e j@ejAi ZBeCddddddddZDdZEdZFdZGd ZHd!ZId"ZJd#ZKe jLZLe jMZMd0d%ZNe jOZOere jPZPd1d'ZQd(ZRd)ZSd*ZTd+ZUd,ZVd-ZWGd.d/ZXdS)2zAIX platform implementation.N)_common)_ntuples)_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_threadsstatusttynrctj\}}}}}t||z |d}tj|||||S)Nrround_)cext virtual_memrntpsvmem)totalavailfree_pinnedinusepercents ;C:\PYTHON\_runtimes\venv\Lib\site-packages\psutil/_psaix.pyvirtual_memoryr2VsK)-)9););&E5$UU]U1===G 9UE7E4 8 88ctj\}}}}||z }t||d}tj||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr%)r'swap_memrr)sswap)r+r-sinsoutusedr0s r1 swap_memoryr:\sM!]__E4d 4zcpu_times..ls555a3q66555r3)r' per_cpu_timesr) scputimesziprets r1 cpu_timesrHis0    C =5539555 66r3c@tj}d|DS)z6Return system per-CPU times as a list of named tuples.c*g|]}tj|Sr=)r)rDr?s r1rBz!per_cpu_times..rs + + +!CM1  + + +r3)r'rCrFs r1rCrCos$    C + +s + + ++r3cN tjdS#t$rYdSwxYw)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)ossysconf ValueErrorr=r3r1cpu_count_logicalrPus:z/000 tts  $$c`gd}tj|tjtj}|\}}d||fD\}}|jdkr|d|}t ||}t|pdS)N)lsdevz-Cc processorstdoutstderrc3^K|](}|tjjV)dSNdecodesysrUencodingr?s r1 z"cpu_count_cores..s3NNahhsz233NNNNNNr3rz command error ) subprocessPopenPIPE communicate returncode RuntimeErrorstrip splitlineslen)cmdprUrVmsg processorss r1cpu_count_coresrk~s ' ' 'CZ_Z_MMMA]]__NFFNNff=MNNNNFF|q00003**,,J z?? "d"r3c`tj\}}}}tj||||S)z*Return various CPU stats as a named tuple.)r' cpu_statsr) scpustats) ctx_switches interruptssoft_interruptssyscallss r1rmrms.:>.:J:J7L*ox =z?H M MMr3Fcg}tj}|D]T}|\}}}}|dkrd}|st|js(t j||||}||U|S)zReturn system disk partitions.none)r'disk_partitions disk_usager+r) sdiskpartappend) allretlist partitions partitiondevice mountpointfstypeoptsntuples r1rvrvsG%''J   +4( FD V  F j))/ vz64@@v Nr3c tj|\}}tj|}g}|D]O}|\}}} } } } } ||vr| |vrt ||| | | | t |dkr| nd}||P|S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). rNpid)r conn_tmapr'net_connectionsr TCP_STATUSESry)kind_pidfamiliestypesrawlistrGitemfdfamtype_laddrraddrr"rnts r1rrs'-OHe"4((G C481Cufc h               rzzt     2 Jr3cttd}dtD}i}|D]-}tj|}tj|}d}d}t jdd|gt jt j}| \} } d| | fD\} } |j dkrNtj d | } | 7t| d }| d }d |} d|v} ||t"}t%j| |||| ||</|S)z)Get NIC stats (isup, duplex, speed, mtu).)FullHalfch|] }|d S)rr=r?s r1 znet_if_stats..s * * *aQqT * * *r3rurz/usr/bin/entstatz-drTc3^K|](}|tjjV)dSrXrYr?s r1r]znet_if_stats..D  ./AHHSZ( ) )      r3z"Running: (\d+) Mbps.*?(\w+) DuplexNrr,running)rr net_if_addrsr' net_if_mtu net_if_flagsr^r_r`rarbresearchintgroupjoingetr r) snicstats) duplex_mapnamesrGnamemtuflagsduplexspeedrhrUrV re_result output_flagsisups r1 net_if_statsrsr)?CCJ * *<>> * * *E CJJod##!$''    t ,??      4:F3C    <1   5vI$IOOA..//"++xx E!(:;;M$sLIID Jr3c(tjS)z:The system boot time expressed in seconds since the epoch.)r' boot_timer=r3r1rrs >  r3cg}tj}d}|D]A}|\}}}}}} |s||vrd}tj||||| } || B|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0 localhost)r'usersr)suserry) r{rrruserttyhostnametstamp user_processrrs r1rrsGjllGI  9=6c8V\3   y "H YtS(FC 8 8r Nr3cVdtjtDS)z7Returns a list of PIDs currently running on the system.cTg|]%}|t|&Sr=)isdigitrr?s r1rBzpids..s+ I I IqQYY[[ ICFF I I Ir3)rMlistdirrr=r3r1pidsrs& I IBJ'8'899 I I IIr3ctjtjt t |dS)z&Check for the existence of a unix pid.psinfo)rMpathexistsrrstrrs r1 pid_existsr!s4 7>>"',,'8'8#c((HMM N NNr3cFtjfd}|S)zCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c|j|j|j}}} |g|Ri|S#ttf$r7}t |st |||t||||d}~wt$r}t|||d}~wwxYwrX) r_ppid_nameFileNotFoundErrorProcessLookupErrorrr r PermissionErrorr )selfargskwargsrrrerrfuns r1wrapperz wrap_exceptions..wrapper+s(DJ 4T 33t-d---f-- -!#56 : : :c?? 8#C..C7T400c 9 3 3 3sD))s 2 3s $B 2A'' B 4BB ) functoolswraps)rrs` r1wrap_exceptionsr&s: _S 3 3 3 3 3 Nr3cveZdZdZgdZdZdZdZee dZ ee dZ edZ ed Z ed Zed Zed Zed Zer edZed!dZedZedZedZedZedZedZedZedZedZeZedZdZ edZ!edZ"ed"dZ#e$r ed Z%dSdS)#Processz1Wrapper class around underlying C implementation.)_cacherr _procfs_pathrcV||_d|_d|_t|_dSrX)rrrrr)rrs r1__init__zProcess.__init__Bs+  +--r3cn|j||j|dSrX)_proc_basic_infocache_activate _proc_credrs r1 oneshot_enterzProcess.oneshot_enterHs5 ,,T222 &&t,,,,,r3cn|j||j|dSrX)rcache_deactivaterrs r1 oneshot_exitzProcess.oneshot_exitLs5 ..t444 ((.....r3c@tj|j|jSrX)r'proc_basic_inforrrs r1rzProcess._proc_basic_infoPs#DHd.?@@@r3c@tj|j|jSrX)r' proc_credrrrs r1rzProcess._proc_credUs~dh(9:::r3c|jdkrdStj|j|jdS)Nrswapper)rr' proc_namerrstriprs r1rz Process.nameZs7 8q==9~dh(9::AA&IIIr3c|}|sdS|d}tjj|vrtj|sOtjtj||}tj|r@tj|r!tj |tj r|Stj |}tj d dD]}tjtj||}tj|r#tj |tj r|cSdS)NrurPATH:)cmdlinerMrsepisabsabspathrcwdisfileaccessX_OKbasenameenvironsplit)rrexer possible_exes r1rz Process.exeasc,,.. 2aj 7;#  7==%% Egoobgll488::s&C&CDD c"" GNN3'' Ic27++   '""3''CJv&,,S11 $ $D7??27<<c+B+BCCLw~~l++ $ bg11 $$###rr3c4tj|jSrX)r' proc_argsrrs r1rzProcess.cmdlines~dh'''r3c4tj|jSrX)r' proc_environrrs r1rzProcess.environs ***r3cL|tdS)Nrr proc_info_maprs r1rzProcess.create_time$$&&}]'CDDr3cL|tdS)Nr!rrs r1r!zProcess.num_threadsr r3ctj|j}g}|D]1\}}}tj|||}||2|s#t j|jd|j|S)N/) r'rrr)pthreadryrMstatr)rrr{ thread_idutimestimers r1threadszProcess.threadss'11GG+2 ' '' 5%Yu==v&&&&  ;4,99tx99:::Nr3inetc|t||j}|s#tj|jd|j|S)N)rr )rrrMrr)rrrGs r1rzProcess.net_connectionssHd222  7 Gt(554855 6 6 6 r3c4tj|jSrX)r'proc_priority_getrrs r1nice_getzProcess.nice_gets%dh///r3c6tj|j|SrX)r'proc_priority_setr)rvalues r1nice_setzProcess.nice_sets%dh666r3cd|td|_|jS)Nr)rrrrs r1rz Process.ppids'**,,]6-BC zr3cd|\}}}}}}tj|||SrXrr)puids)rreal effectivesaved_s r1uidsz Process.uidss2*.//*;*;'i1ayy%000r3cd|\}}}}}}tj|||SrXr)rr#r r!r"s r1gidsz Process.gidss2*.//*;*;'1ay%yy%000r3c\tj|j|j}t j|SrX)r'proc_cpu_timesrrr) pcputimes)rts r1rHzProcess.cpu_timess&  $*; < <}a  r3c|td}|dzdz |dzz}tjdD]#}tj|j|kr|cS$dS)Nr#liz /dev/**/*)rrglobrMrst_rdev)rttydevdevs r1terminalzProcess.terminalsx&&((w)?@..25&6/J9[))  Cws||#v-- .tr3c|j} tj|d|jd}|dS#t $r"tj|d|jYdSwxYw)Nr z/cwdru)rrMreadlinkrrrr)r procfs_pathresults r1rz Process.cwds'  [K!@!@$(!@!@!@AAF==%% %     G{//TX// 0 0 022 s3=(A)(A)c|}|tddz}|tddz}tj||S)Nrir)rrr)pmem)rrGrrs r1 memory_infozProcess.memory_infosM##%%-&'$.-&'$.xS!!!r3c|td}t|dS)Nr"?)rr PROC_STATUSESr)rcodes r1r"zProcess.statuss3$$&&}X'>?  s+++r3c vtjddt|jgtjtj}|\}}d||fD\}}d|vrt|j|jtj d|}g}|D]\}}| }| dr |dd}|d krQ| tj|t!||S) Nz/usr/bin/procfilesz-nrTc3^K|](}|tjjV)dSrXrYr?s r1r]z%Process.open_files..rr3zno such processz(\d+): S_IFREG.*name:(.*)\nz//rzcannot be retrieved)r^r_rrr`ralowerr rrfindallrd startswithryr) popenfiler)rrhrUrV procfilesr{rrs r1 open_fileszProcess.open_filess5   !4TX 7??      4:F3C      . .$*55 5J=vFF ! 9 9HB::<rs#"  !!!!!!$$$$$$$$$$$$''''''!!!!!!""""""""""""######$$$$$$++++++""""""gdN++ gd$566wt%788 D    , Iw"J%L'(J&J&   73--'0'0/g('1-g)w+7,           "999 <<<777 ,,,  # # #NNN(  4 +*O6###V 0JJJ OOO .e+e+e+e+e+e+e+e+e+e+r3