B Œ=Ý_{Hã@sØdZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZdgZe e dƒZ!e e dƒZ"e e dƒZ#e $¡Z%ej&Z&e j'e j(e j)e j*e j+e j,e j-e j,e j.e j/iZ0e j1e j2e j3e j4e j5e j6e j7e j8e j9e j:e j;e je j?e j@e jAe jBe jCe jDe jEe jFe jGe jHi ZIeJdddddddd d!�ZKed"d#d$gƒZLeLZMed%d&d'd(d)gƒZNed*d+d,d-d.d/gƒZOd0d1„ZPd2d3„ZQd4d5„ZRd6d7„ZSd8d9„ZTd:d;„ZUd€szcpu_times..)r3Ú per_cpu_timesr)Úzip)Úretr4r4r5Ú cpu_times}srBcCst ¡}dd„|DƒS)z5Return system per-CPU times as a list of named tuplescSsg|] }t|Ž‘qSr4)r))r<r=r4r4r5r>†sz!per_cpu_times..)r3r?)rAr4r4r5r?ƒsr?cCs$y t d¡Stk rdSXdS)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ ValueErrorr4r4r4r5Úcpu_count_logical‰s rGcCsrd}tj|dtjtjd�}| ¡\}}tr@dd„||fDƒ\}}|jdkrZtd||fƒ‚| ¡ ¡}t |ƒppdS)Nzlsdev -Cc processorT)ÚshellÚstdoutÚstderrcSsg|]}| tjj¡‘qSr4)ÚdecodeÚsysrIÚencoding)r<r=r4r4r5r>˜sz&cpu_count_physical..rz%r command error %s) Ú subprocessÚPopenÚPIPEÚ communicaterÚ returncodeÚ RuntimeErrorÚstripÚ splitlinesÚlen)ÚcmdÚprIrJZ processorsr4r4r5Úcpu_count_physical’s     rYcCs t ¡\}}}}t ||||¡S)z*Return various CPU stats as a named tuple.)r3Ú cpu_statsrÚ scpustats)Ú ctx_switchesÚ interruptsÚsoft_interruptsÚsyscallsr4r4r5rZ srZFc Cslg}t ¡}xZ|D]R}|\}}}}|dkr.d}|s>t|ƒjs>qd}} t |||||| ¡} | | ¡qW|S)zReturn system disk partitions.ZnoneÚN)r3Údisk_partitionsÚ disk_usager.rÚ sdiskpartÚappend) ÚallÚretlistÚ partitionsÚ partitionÚdeviceÚ mountpointÚfstypeÚoptsÚmaxfileÚmaxpathÚntupler4r4r5ra°s    raéÿÿÿÿc Cs°tj}||kr.td|d dd„|Dƒ¡fƒ‚tj|\}}t |¡}g}x`|D]X}|\}} } } } } }| |krpqP| |krzqPt|| | | | | t|dkr–|ndd�}| |¡qPW|S)zˆReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). z+invalid %r kind argument; choose between %sz, cSsg|] }t|ƒ‘qSr4)Úrepr)r<r=r4r4r5r>Ùsz#net_connections..rpN)Úpid) rÚ conn_tmaprFÚjoinr3Únet_connectionsr Ú TCP_STATUSESrd)ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistrAÚitemÚfdÚfamÚtype_ÚladdrÚraddrr&rrÚntr4r4r5ruÒs"  ruc Csàttdœ}tdd„tƒDƒƒ}i}x¸|D]°}t |¡\}}d}d}tjdd|gtjtjd�}|  ¡\} } t r‚d d„| | fDƒ\} } |j dkr¸t   d | ¡} | d k r¸t|  d ¡ƒ}|  d ¡}| |t¡}t ||||¡||<q(W|S)z)Get NIC stats (isup, duplex, speed, mtu).)ÚFullZHalfcSsg|] }|d‘qS)rr4)r<r=r4r4r5r>ísz net_if_stats..r`rz/usr/bin/entstatz-d)rIrJcSsg|]}| tjj¡‘qSr4)rKrLrIrM)r<r=r4r4r5r>ûsz"Running: (\d+) Mbps.*?(\w+) DuplexNrr)r r ÚsetÚ net_if_addrsr3Ú net_if_statsrNrOrPrQrrRÚreÚsearchÚintÚgroupÚgetrrÚ snicstats) Z duplex_mapÚnamesrAÚnameÚisupÚmtuÚduplexÚspeedrXrIrJZ re_resultr4r4r5r…és.      r…cCst ¡S)z:The system boot time expressed in seconds since the epoch.)r3Ú boot_timer4r4r4r5r’sr’c Cs`g}t ¡}d}xJ|D]B}|\}}}}}} |s0q||kr-szpids..)rDÚlistdirr r4r4r4r5Úpids+sršcCstj tj tƒt|ƒd¡¡S)z&Check for the existence of a unix pid.Zpsinfo)rDÚpathÚexistsrtr Ústr)rrr4r4r5Ú pid_exists0sržcst ˆ¡‡fdd„ƒ}|S)zƒCall callable into a try/except clause and translate ENOENT, EACCES and EPERM in NoSuchProcess or AccessDenied exceptions. c szyˆ|f|ž|ŽSttfk rTt|jƒs>t|j|jƒ‚nt|j|j|jƒ‚Yn"tk rtt |j|jƒ‚YnXdS)N) rrržrrrÚ_namerÚ_ppidrr)ÚselfÚargsÚkwargs)Úfunr4r5Úwrapper9s z wrap_exceptions..wrapper)Ú functoolsÚwraps)r¤r¥r4)r¤r5Úwrap_exceptions5sr¨c@sxeZdZdZdddddgZdd„Zd d „Zd d „Zee d d„ƒƒZ ee dd„ƒƒZ edd„ƒZ edd„ƒZ edd„ƒZedd„ƒZedd„ƒZedd„ƒZerªedd„ƒZedAd d!„ƒZed"d#„ƒZed$d%„ƒZed&d'„ƒZed(d)„ƒZed*d+„ƒZed,d-„ƒZed.d/„ƒZed0d1„ƒZed2d3„ƒZeZed4d5„ƒZd6d7„Z ed8d9„ƒZ!ed:d;„ƒZ"edBd=d>„ƒZ#e$�rted?d@„ƒZ%dÿsz&Process.open_files..zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//rzcannot be retrieved)rNrOr�rrrPrQrÚlowerrrŸr†ÚfindallrTÚ startswithrdrÚ popenfilerˆ)r¡rXrIrJZ procfilesrfr|r›r4r4r5Ú open_filesøs$      zProcess.open_filescCs(|jdkrdStt d|j|jf¡ƒS)Nrz%s/%s/fd)rrrVrDr™rª)r¡r4r4r5Únum_fdss zProcess.num_fdscCstjt |j¡ŽS)N)rÚpctxswr3Zproc_num_ctx_switchesrr)r¡r4r4r5Únum_ctx_switchesszProcess.num_ctx_switchesNcCst |j||j¡S)N)rZwait_pidrrrŸ)r¡Útimeoutr4r4r5Úwaitsz Process.waitcCsXyt |j¡\}}}}Wn.tk rFt|jƒs@t|j|jƒ‚‚YnXt ||||¡S)N) r3rrrÚOSErrorržrrŸrÚpio)r¡ÚrcZwcÚrbÚwbr4r4r5Ú io_counterss zProcess.io_counters)rÈ)N)&Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r¬r°r²r¨r r­r¯r�rÂr·rÀr#r%Ú HAS_THREADSrÇrÉrÌrÏr rÕrÖrBrÜr»ràZmemory_full_infor&rèrérëríÚHAS_PROC_IO_COUNTERSrór4r4r4r5r©JsJ                  r©)F)rp)er÷r¦rÙrDr†rNrLÚ collectionsrr`rrrr3rrÊrr r r r r rrrrÚ_compatrrrrZ__extra__all__ÚhasattrrùZHAS_NET_IO_COUNTERSrúZ getpagesizeZ PAGE_SIZEZAF_LINKZSIDLÚ STATUS_IDLEZSZOMBÚ STATUS_ZOMBIEZSACTIVEÚSTATUS_RUNNINGZSSWAPZSSTOPÚSTATUS_STOPPEDrâZTCPS_ESTABLISHEDÚCONN_ESTABLISHEDZ TCPS_SYN_SENTÚ CONN_SYN_SENTZ TCPS_SYN_RCVDÚ CONN_SYN_RECVZTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ZTCPS_TIME_WAITÚCONN_TIME_WAITZ TCPS_CLOSEDÚ CONN_CLOSEZTCPS_CLOSE_WAITÚCONN_CLOSE_WAITZ TCPS_LAST_ACKÚ CONN_LAST_ACKZ TCPS_LISTENÚ CONN_LISTENZ TCPS_CLOSINGÚ CONN_CLOSINGZPSUTIL_CONN_NONEÚ CONN_NONErvÚdictrÃr(Zpfullmemr)r-r6r:rBr?rGrYrZZdisk_io_countersrbrar„rrur…r’r”ršržr¨Úobjectr©r4r4r4r5Ús¤                              %