oiJ`.dZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZgdZejZej Z ej!dkZ"dZ#dZ$ej%e j&ej'e j(ej)e j*ej+e j,ej-e j.ej/e j(ej0e j1iZ2ej3e j4ej5e j6ej7e j8ej9e j:ej;e j<ej=e j>ej?e j@ejAe jBejCe jDejEe jFejGe jHejIe jJejKe#ejLe$iZMeNddddddddd d!d"d#$ ZOd%ZPd&ZQd'ZRd(ZSd)ZTd*ZUd+ZVejWZWejXZXd8d-ZYejZZZej[Z[d9d/Z\d0Z]d1Z^d2Z_d3Z`d4Zad5ZbGd6d7ZcdS):z'Sun OS Solaris platform implementation.N) namedtuple)AF_INET)_common)_ntuples)_psposix) _psutil_sunos)AF_INET6)ENCODING) AccessDenied) NoSuchProcess) ZombieProcess)debug)get_procfs_path) isfile_strict)memoize_when_activated)sockfam_to_enum)socktype_to_enum) usage_percent) CONN_IDLE CONN_BOUND PROCFS_PATHlIDLEBOUND ) ppidrssvms create_timenice num_threadsstatusttynruideuidgidegidctjdtz}tjdtzx}}||z }t||d}t j|||||S)zReport virtual memory metrics. SC_PHYS_PAGESSC_AVPHYS_PAGESrround_)ossysconf PAGE_SIZErntpsvmem)totalfreeavailusedpercents ?C:\PYTHON\Scheduler\python\Lib\site-packages\psutil/_pssunos.pyvirtual_memoryrA`sg J ' ') 3E:/009<r?s r@ swap_memoryrbks IC   8BJv$6 8 8       A IFA ]]3:. / /F|q:1<:::3 LLNN  & &qrr *E  ,3ED""zz||AaCy1 SVVc\""" CFFSL!!! 4zcpu_times..s555a3q66555rB)rI per_cpu_timesr9 scputimesziprets r@ cpu_timesrps0    C =5539555 66rBc@tj}d|DS)z6Return system per-CPU times as a list of named tuples.c*g|]}tj|Sre)r9rlrgs r@rjz!per_cpu_times..s + + +!CM1  + + +rB)rIrkrns r@rkrks$    C + +s + + ++rBcN tjdS#t$rYdSwxYw)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)r6r7 ValueErrorrerBr@cpu_count_logicalrvs:z/000 tts  $$c(tjS)z-Return the number of CPU cores in the system.)rIcpu_count_coresrerBr@rxrxs   ! !!rBcdtj\}}}}d}tj||||S)z*Return various CPU stats as a named tuple.r)rI cpu_statsr9 scpustats) ctx_switches interruptssyscalls_trapssoft_interruptss r@rzrzs3151A1A.L*hO =z?H M MMrBFc:g}tj}|D]}|\}}}}|dkrd}|sC t|js)n,#t$r}t d|d|Yd}~Nd}~wwxYwt j||||} || |S)zReturn system disk partitions.nonez skipping z: N) rIdisk_partitions disk_usager;OSErrorrr9 sdiskpartappend) allretlist partitions partitiondevice mountpointfstypeoptserrntuples r@rrsG%''J +4( FD V  F  !*--3   7*77#77888 vz64@@v NsA A+ A&&A+c tj|\}}tj|}t }|D]}|\}}} } } } } ||vr| |vr|t t hvr | rtj| } | rtj| } t| } t|}t| } |dkrtj ||| | | | | }ntj ||| | | | }||t|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). r)r conn_tmaprInet_connectionssetrr r9addr TCP_STATUSESrrsconnpconnaddlist)kind_pidfamiliestypesrawlistroitemfdfamtype_laddrraddrr+pidnts r@rrs% '-OHe"4((G %%C481Cufc h        7H% % % )%( )%(f%c"" '' 2::2sE5%EEBB2sE5%@@B  99rBctj}|D]P\}}|\}}}}ttdrt j|}t j||||d||<Q|S)z)Get NIC stats (isup, duplex, speed, mtu). NicDuplexr)rI net_if_statsitemshasattrrrr9 snicstats)ronamerisupduplexspeedmtus r@rrs    Cyy{{@@ e#( feS 7K ( ( /&v..FM$sB??D JrBc(tjS)z:The system boot time expressed in seconds since the epoch.)rI boot_timererBr@rrs >  rBcg}tj}d}|D]A}|\}}}}}} |s||vrd}tj||||| } || B|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0 localhost)rIusersr9suserr) rrrruserttyhostnametstamp user_processrrs r@rrsGjllGI  9=6c8V\3   y "H YtS(FC 8 8r NrBctt}dtj|DS)z7Returns a list of PIDs currently running on the system.cTg|]%}|t|&Sre)isdigitrWrgs r@rjzpids..5s+ < < .wrapperBs(DJ 4T 3t-d---f-- -!#56 : : :c?? 8#C..C7T400c 9 3 3 3sD))s 2   axx;;&sD11s:   s, $C2A'' C4B C)B;;C) functoolswraps)rrs` r@wrap_exceptionsr=s: _S( NrBceZdZdZgdZdZdZdZdZe e dZ e e dZ e e d Z e d Ze d Ze d Ze d Ze dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZeZe dZe dZ e dZ!dZ"e d(dZ#e$d d!Z%e$d d"Z&e d#Z'e d$Z(e d%Z)e d)d'Z*d&S)*Processz1Wrapper class around underlying C implementation.)_cacherr _procfs_pathrcV||_d|_d|_t|_dSN)rrrrr)rrs r@__init__zProcess.__init___s+  +--rBcLtj|jd|jdS)z+Raise NSP if the process disappeared on us./N)r6statrrrs r@ _assert_alivezProcess._assert_alivees- 4$11tx1122222rBc|j||j||j|dSr)_proc_name_and_argscache_activate_proc_basic_info _proc_credrs r@ oneshot_enterzProcess.oneshot_enterksL  //555 ,,T222 &&t,,,,,rBc|j||j||j|dSr)rcache_deactivaterrrs r@ oneshot_exitzProcess.oneshot_exitpsL  11$777 ..t444 ((.....rBc@tj|j|jSr)rIproc_name_and_argsrrrs r@rzProcess._proc_name_and_argsus&tx1BCCCrBc.|jdkrCtj|jd|jdst |jt j|j|j}t|ttksJ|S)Nrrz/psinfo) rr6rexistsrr rIproc_basic_infolen proc_info_map)rros r@rzProcess._proc_basic_infozs 8q== 4 448 4 4 4" " =tx(( ("48T->??3xx3}------ rBc@tj|j|jSr)rI proc_credrrrs r@rzProcess._proc_creds~dh(9:::rBc6|dSrrrs r@rz Process.names''))!,,rBc tj|jd|jdS#t$rYnwxYw|dS)Nrz /path/a.outr)r6readlinkrrrcmdliners r@exez Process.exesa ;$"3KKdhKKKLL L    D  rs #& 33c6|dS)Nrrrs r@rzProcess.cmdlines''))!,,rBc@tj|j|jSr)rI proc_environrrrs r@rMzProcess.environ 4+<===rBcL|tdS)Nr(rrrs r@r(zProcess.create_time$$&&}]'CDDrBcL|tdS)Nr*rrs r@r*zProcess.num_threadsrrBcL|tdS)Nr)rrs r@nice_getzProcess.nice_gets $$&&}V'<==rBc||jdvrt|j|jtj|j|S)N>rr)rr rrIproc_priority_set)rvalues r@nice_setzProcess.nice_sets: 8v   tx44 4%dh666rBcd|td|_|jS)Nr%)rrrrs r@r%z Process.ppids'**,,]6-BC zrBc  |\}}}}}}n\#t$rO|td}|td}d}YnwxYwt j|||S)Nr-r.rr rrr9puids)rreal effectivesavedr\s r@uidsz Process.uidss .2oo.?.? +D)UAq!!   ((**=+?@D--// f0EFIEEE yy%000AA76A7c  |\}}}}}}n\#t$rO|td}|td}d}YnwxYwt j|||S)Nr/r0r)rr\rrrs r@gidsz Process.gidss .2oo.?.? +Aq!T9ee   ((**=+?@D--// f0EFIEEE yy%000rc tj|j|j}n7#t$r*}|jt jkr tsd}nYd}~nd}~wwxYwtj |S)N)rrr) rIproc_cpu_timesrrrerrno EOVERFLOW IS_64_BITr9 pcputimes)rtimesrs r@rpzProcess.cpu_timess{ '$2CDDEE   yEO++I+- }e$$s" A AAc@tj|j|jSr)rI proc_cpu_numrrrs r@cpu_numzProcess.cpu_numrrBc@|j}d}t|td}|tjkr:dD]7} t j|d|jd|cS#t$rd}Y4wxYw|r| dSdS)NFr,)rrrr/path/T) rrrrrIPRNODEVr6rrrr)r procfs_path hit_enoentrris r@terminalzProcess.terminals'  d3355mG6LMNN $,  #  ;+'K'K'K'K'K'KLLLLL(!%JH  !     ! !s A44 BBc|j} tj|d|jdS#t$r"tj|d|jYdSwxYw)Nrz /path/cwdr)rr6rrrr)rr&s r@cwdz Process.cwdsv '  ;+CCCCCDD D     G{//TX// 0 0 022 s((AAc|}|tddz}|tddz}tj||S)Nr&ir')rrr9pmem)rror&r's r@ memory_infozProcess.memory_infosM##%%-&'$.-&'$.xS!!!rBc|td}t|dS)Nr+?)rr PROC_STATUSESget)rcodes r@r+zProcess.statuss3$$&&}X'>?  s+++rBc|j}g}tj|d|jd}d}|D]}t |} t j|j||\}}tj|||}| |\#t$rC} | j tj kr tsYd} ~ | j tjkrd}Yd} ~ d} ~ wwxYw|r||S)Nrz/lwpFT)rr6rrrWrIquery_process_threadr9pthreadrrrrrENOENTr) rr&rotidsr'tidutimestimerrs r@threadszProcess.threadss' z[9948999::   Cc((C #8Hc;   u&[eU33 2#   9// /HHHH9 ,,!%JHHHH $  !     s#B  CC4CCCc g}d}|j}|d|jd}tj|d|jdD]}tj||}tj|rl tj|}t|r5| tj |t|#t$rd}YwxYw|r||S)NFrz/path/fdT)rrr6rrjoinislinkrrrr9 popenfilerWrr)rrr'r&pathdirrrfiles r@ open_fileszProcess.open_files8s! '  2248222* ;;dh;;;<< E EB7<<,,Dw~~d## EE;t,,D %T**Es}T3r77'C'CDDD )!%JH E  !    s:C C"!C"c#Kdt|g}tj|tjtj}|\}}d||fD\}}|jdkrvd|vrt|j|j d|vrt|j|j |d|}t|| dd d }t|D]\}} | } | d r| d d d } ||d z } | d kr t"j} n| dkr t"j} nd} dt"j| | dt*jfVd S)zz,Process._get_unix_sockets..VsD  ./AHHSZ( ) )      rBrzpermission deniedzno such processz command error rHrNzsockname: AF_UNIX SOCK_STREAM SOCK_DGRAMrr)strrKrLrNrOrSlowerr rrr rTrV enumeratelstrip startswithrUsocketrJrKAF_UNIXr CONN_NONE) rrcmdr[rFrFr]r^ir_rtypes r@_get_unix_socketszProcess._get_unix_socketsMsS"          4:F3C    <1  "fllnn44"48TZ888 FLLNN22#DHdj99944F44Cs## # T""122& '' N NGAt;;==D233 Nzz#q))!,QU|))++=((!-DD\))!,DDD6>4r7;LMMMM N NrBinetct||j}|s#tj|jd|j|dvr7|d||jD|S)N)rr>runixc*g|]}tj|Sre)r9r)rhconns r@rjz+Process.net_connections..~sOOOdD!OOOrB)rrr6rrextendrW)rrros r@rzProcess.net_connectionsosd222  7 Gt(554855 6 6 6 ? " " JJOOd.D.DTX.N.NOOO    rBmmapzpath rss anon lockedzaddr perms path rss anon lockedc Ld}|j}g} tj|j|}n6#t$r)}|jt jkrtsgcYd}~Sd}~wwxYwd}|D]}|\}} } } } } }||| }| dsb tj |d|jd| } n?#t$r2}|jt j kr|d|jd| } d}nYd}~nd}~wwxYw| || | | | |f|r| |S)Ncdt|dddt|dddS)Nz{}-{}rL)formathexrU)startends r@toaddrz#Process.memory_maps..toaddrsU>>E 122$$S))3s88ABB<+=+=c+B+B rBF[rr$T)rrIproc_memory_mapsrrrrrrPr6rr6rr)rrfr&rrrr'rraddrsizepermrr&anonlockeds r@ memory_mapszProcess.memory_mapss    '  +DHkBBGG   yEO++I+    B BD<@ 9D(D$T66$))D??3''  ;+'N'N'N'N'N'NOODD   yEL00#.FFFFFF%) #   NND$c4@ A A A A  !    s8) AAAAA!B33 C/=(C**C/cdttj|jd|jdS)Nrr=)rr6rrrrs r@num_fdszProcess.num_fdss02:!2BBTXBBBCCDDDrBcXtjtj|j|jSr)r9pctxswrIproc_num_ctx_switchesrrrs r@num_ctx_switcheszProcess.num_ctx_switchess&z  '$2C D D  rBNcBtj|j||jSr)rwait_pidrr)rtimeouts r@waitz Process.waits 7DJ???rB)rXr)+__name__ __module__ __qualname____doc__ __slots__rrrrrrrrrrrrrMr(r*rr r%rrrpr!r(r*r-memory_full_infor+r;rCrWrrnt_mmap_grouped nt_mmap_extrmrorsrwrerBr@rrZs;;CCCI... 333 --- /// DD_D_;;_;--_-  _ --_->>_>EE_EEE_E>>_> 77_7_11_111_1%%_%">>_> ! !_ !  _ ""_" #,,_, _B_( N N ND_$!j)?@@O*V%FGGK,,_,\EE_E  _ @@@_@@@rBr)F)r)dr{rrr6rQrKrQ collectionsrrrrrr9rr rIr r r r rrrrrrrr__extra__all__ getpagesizer8AF_LINKmaxsizerrrSSLEEPSTATUS_SLEEPINGSRUNSTATUS_RUNNINGSZOMB STATUS_ZOMBIESSTOPSTATUS_STOPPEDSIDL STATUS_IDLESONPROCSWAITSTATUS_WAITINGr0TCPS_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_NONErS TCPS_IDLE TCPS_BOUNDrdictrrArbrprkrvrxrzdisk_io_countersrrnet_io_counters net_if_addrsrrrrrrrrrerBr@rsG .-   """"""######!!!!!!""""""""""""$$$$$$""""""++++++$$$$$$%%%%%%"""""";;; D    , K%     K(Iw%J%J&Iw"L'(J&  73--'0'0/g('1-g)w+7,NIOZ "           *888&&&\777 ,,, """ NNN(  >& >  0=== $$$ :f@f@f@f@f@f@f@f@f@f@rB