B Œ=Ý_]yã@s–dZddlZddlZddlZddlZddlmmZddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlmZddlm Z ddlm!Z!ddlm"Z"gZ#erzej$e j%ej&e j'ej(e j)ej*e j+ej,e j-ej.e j/ej0e j1iZ2n~er¾ej$e j%ej(e j)ej*e j+ej3e j-ej,e j-ej&e j4ej5e j'iZ2n:erøej$e j%ej(e j)ej*e j+ej,e j-ej&e j4ej5e j'iZ2ej6e j7ej8e j9ej:e j;eje j?ej@e jAejBe jCejDe jEejFe jGejHe jIejJe jKejLe jMi ZNe O¡ZPejQZQeRedƒZSeRedƒZTeRedƒZUeRedƒZVeWdddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4ZXe d5d6d7d8d9d:d;dd?d@g ƒZYe dAdBdCdDdEdFgƒZZe dGdHdIdJdKdLgƒZ[e[Z\e dMdBdDdNdOgƒZ]e dPdQƒZ^e dRdSƒZ_er^e dTdUdVdWdXdYdZd[gƒZ`ne dTdUdVdWdXgƒZ`d\d]„Zad^d_„Zbd`da„ZceSr˜dbd„Zdndcd„Zddded_ededf„ZfesºerÄdgdh„Zgndidh„Zgdjdk„ZhdŠdldm„ZiejjZjejkZkejlZlejmZmdndo„Zndpdq„Zoer$drds„Zpdtdu„Zqdvdw„Zrdxdy„Zsdzd{„Zted|d}„ƒZud~d„ZvesTer^d€d„ZwnejwZwd‚dƒ„Zxd„d…„Zyejzd†d‡„ƒZ{Gdˆd‰„d‰e|ƒZ}dS)‹z5FreeBSD, OpenBSD and NetBSD platforms implementation.éN)Ú namedtuple)Ú defaultdicté)Ú_common)Ú_psposix)Ú _psutil_bsd)Ú _psutil_posix)Ú AccessDenied)Ú conn_tmap)Úconn_to_ntuple)ÚFREEBSD)Úmemoize)Úmemoize_when_activated)ÚNETBSD)Ú NoSuchProcess)ÚOPENBSD)Ú usage_percent)Ú ZombieProcess)ÚFileNotFoundError)ÚPermissionError)ÚProcessLookupError)ÚwhichÚ per_cpu_timesÚproc_num_threadsÚproc_open_filesÚ proc_num_fdséééééééé é é é é ééééééééééé)ÚppidÚstatusÚreal_uidÚ effective_uidÚ saved_uidÚreal_gidÚ effective_gidÚ saved_gidÚttynrÚ create_timeÚctx_switches_volÚctx_switches_unvolÚ read_io_countÚwrite_io_countÚ user_timeÚsys_timeÚ ch_user_timeÚ ch_sys_timeÚrssÚvmsÚmemtextÚmemdataÚmemstackÚcpunumÚnameÚsvmemÚtotalZ availableÚpercentÚusedÚfreeÚactiveÚinactiveÚbuffersÚcachedÚsharedÚwiredÚ scputimesÚuserÚniceÚsystemÚidleÚirqÚpmemrErFÚtextÚdataÚstackÚ pcputimesÚ children_userÚchildren_systemÚ pmmap_groupedz*path rss, private, ref_count, shadow_countÚ pmmap_extz6addr, perms path rss, private, ref_count, shadow_countÚsdiskioZ read_countZ write_countZ read_bytesZ write_bytesZ read_timeZ write_timeZ busy_timec CsÈt ¡}|\}}}}}}}}tr‚tddƒR} xJ| D]B} |  d¡rVt|  ¡dƒd}q2|  d¡r2t|  ¡dƒd}q2WWdQRX|||} |||} t|| |dd} t|| | | |||||||ƒ S) z&System virtual memory as a namedtuple.z /proc/meminfoÚrbsBuffers:ris MemShared:N)Úround_) ÚcextZ virtual_memrÚopenÚ startswithÚintÚsplitrrL)ZmemrMrPrQrRrVrTrSrUÚfÚlineZavailrOrN©rpú@/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psbsd.pyÚvirtual_memory³s    "   rrcCs4t ¡\}}}}}t||dd}t ||||||¡S)z@System swap memory as (total, used, free, sin, sout) namedtuple.r)rh)riZswap_memrrZsswap)rMrOrPZsinZsoutrNrprprqÚ swap_memoryÇsrscCs"t ¡\}}}}}t|||||ƒS)z+Return system per-CPU times as a namedtuple)riÚ cpu_timesrW)rXrYrZr[r\rprprqrtÓsrtcCsBg}x8t ¡D],}|\}}}}}t|||||ƒ}| |¡qW|S)z'Return system CPU times as a namedtuple)rirrWÚappend)ÚretZcpu_trXrYrZr[r\ÚitemrprprqrÚs cCs.tƒdkrtƒgStjr tdƒ‚dt_tƒgS)z'Return system CPU times as a namedtuplerz&supported only starting from FreeBSD 8T)Úcpu_count_logicalrtrÚ __called__ÚNotImplementedErrorrprprprqrês  FcCst ¡S)z0Return the number of logical CPUs in the system.)rirxrprprprqrxösrxcCstƒdkrdSdS)Nr)rxrprprprqÚcpu_count_physicalüsr{cCsxd}t ¡}|dk rb| d¡}|dkrb|d|d…}t |¡}zt| d¡ƒpRd}Wd| ¡X|sttƒdkrtdS|S)z1Return the number of physical CPUs in the system.Nz éÿÿÿÿr#zgroup/children/group/cpur) riZcpu_count_physÚrfindÚETZ fromstringÚlenÚfindallÚclearrx)rvÚsÚindexÚrootrprprqr{s    c Csœtrt ¡\}}}}}nttrrt ¡\}}}}}}}tddƒ.}x&|D]}| d¡rDt| ¡dƒ}qDWWdQRXntrŒt ¡\}}}}}}}t   ||||¡S)z*Return various CPU stats as a named tuple.z /proc/statrgsintrrN) r riÚ cpu_statsrrjrkrlrmrrZ scpustats) ZctxswZintrsZ soft_intrsZsyscallsZtrapsZfaultsZforksrnrorprprqr…s     r…c CsPg}t ¡}x>|D]6}|\}}}}d}} t |||||| ¡} | | ¡qW|S)z”Return mounted disk partitions as a list of namedtuples. 'all' argument is ignored, see: https://github.com/giampaolo/psutil/issues/906 N)riÚdisk_partitionsrZ sdiskpartru) ÚallÚretlistZ partitionsÚ partitionZdeviceZ mountpointZfstypeZoptsZmaxfileZmaxpathÚntuplerprprqr†?s   r†c Cs tƒ ¡}i}xŒ|D]„}y&t |¡}t |¡}t |¡\}}Wn0tk rn}z|jtjkr^‚Wdd}~XYqXt t dƒr„t   |¡}t   ||||¡||<qW|S)z)Get NIC stats (isup, duplex, speed, mtu).NÚ NicDuplex) Únet_io_countersÚkeysÚ cext_posixZ net_if_mtuZnet_if_is_runningZnet_if_duplex_speedÚOSErrorÚerrnoZENODEVÚhasattrrr‹Z snicstats)ÚnamesrvrKZmtuZisupZduplexZspeedÚerrrprprqÚ net_if_stats\s       r”c Cs&trzg}xltƒD]b}yt|ƒ |¡}Wnttfk r@wYqXx.|D]&}t|ƒ}| |¡| tj |Ž¡qHWqW|S|tj kr¤t d|d  dd„t Dƒ¡fƒ‚t |\}}t ƒ}trÆt d¡}nt ¡}xN|D]F}|\} } } } } }}| |krÔ| |krÔt| | | | | |t|ƒ}| |¡qÔWt|ƒS)z System-wide network connections.z+invalid %r kind argument; choose between %sz, cSsg|] }t|ƒ‘qSrp)Úrepr)Ú.0Úxrprprqú ‚sz#net_connections..r|)rÚpidsÚProcessÚ connectionsrrÚlistrurZsconnr Ú ValueErrorÚjoinÚsetrriÚnet_connectionsr Ú TCP_STATUSESÚadd)ÚkindrvÚpidZconsZconnÚfamiliesÚtypesÚrawlistrwÚfdÚfamÚtypeÚladdrÚraddrr4Úntrprprqr ps6       r cCsbyt ¡\}}}Wntk r&dSX|dk}|rt|j|j|jƒ‚nt|j|jƒ‚Yn\tk rpt|j|jƒ‚Yn<t k rª|jdkr¤dt ƒkr¢t|j|jƒ‚n‚‚YnXdS)Nr) rrÅr¤rÚ_nameÚ_ppidrrr rr™)ÚselfÚargsÚkwargs)ÚfunrprqÚwrapper#s   z wrap_exceptions..wrapper)Ú functoolsÚwraps)rËrÌrp)rËrqÚwrap_exceptionssrÏc csty dVWndttfk rNt|jƒrd?ƒZ%e$d>d@ƒZ&dAdB„Z'e(rŒedCdD„ƒZ)ne'Z)e*r¤edEdF„ƒZ+ne'Z+eràedGdH„ƒZ,edIdJ„ƒZ-edKdL„ƒZ.edQdMdN„ƒZ/d1S)Rršz1Wrapper class around underlying C implementation.r¤rÆrÇÚ_cachecCs||_d|_d|_dS)N)r¤rÆrÇ)rÈr¤rprprqÚ__init__NszProcess.__init__cCst |j¡dS)z+Raise NSP if the process disappeared on us.N)riÚ proc_namer¤)rÈrprprqÚ _assert_aliveSszProcess._assert_alivecCst |j¡}|S)z;Retrieves multiple process info in one shot as a raw tuple.)rirÀr¤)rÈrvrprprqÚoneshotYs zProcess.oneshotcCs|j |¡dS)N)rÖZcache_activate)rÈrprprqÚ oneshot_enteraszProcess.oneshot_entercCs|j |¡dS)N)rÖZcache_deactivate)rÈrprprqÚ oneshot_exitdszProcess.oneshot_exitcCs(| ¡td}|dk r|St |j¡S)NrK)rÖrÁrirÔr¤)rÈrKrprprqrKgsz Process.namec Csvtr|jdkrdSt |j¡StrR|jdkr0dSt|ƒt d|j¡SQRXn | ¡}|rnt |dƒpldSdSdS)NrÚz /proc/%s/exe) r r¤riZproc_exerrÑÚosÚreadlinkÚcmdliner)rÈrÜrprprqÚexels    z Process.exec Cs¨tr|jdkrgStr˜y t |j¡Stk r”}zT|jtjkr‚t|jƒr^t |j|j |j ƒ‚q„t |jƒs|t |j|j |j ƒ‚q„gSn‚Wdd}~XYq¤Xn t |j¡SdS)Nr)rr¤rriZ proc_cmdlinerrÚEINVALrÅrrÆrÇr¾r)rÈr“rprprqrÜ„s    zProcess.cmdlinecCs t |j¡S)N)riZ proc_environr¤)rÈrprprqÚenvironžszProcess.environcCs:| ¡td}t ¡}y||Stk r4dSXdS)Nr;)rÖrÁrZget_terminal_mapÚKeyError)rÈZtty_nrZtmaprprprqÚterminal¢s zProcess.terminalcCs| ¡td|_|jS)Nr3)rÖrÁrÇ)rÈrprprqr3«sz Process.ppidcCs.| ¡}t |td|td|td¡S)Nr5r6r7)rÖrZpuidsrÁ)rÈÚrawtuplerprprqÚuids°s   z Process.uidscCs.| ¡}t |td|td|td¡S)Nr8r9r:)rÖrZpgidsrÁ)rÈrârprprqÚgids¸s   z Process.gidscCs8| ¡}t |td|td|td|td¡S)NrArBrCrD)rÖrrarÁ)rÈrârprprqrtÀs    zProcess.cpu_timescCs| ¡tdS)NrJ)rÖrÁ)rÈrprprqÚcpu_numÊszProcess.cpu_numcCs@| ¡}t|td|td|td|td|tdƒS)NrErFrGrHrI)rÖr]rÁ)rÈrârprprqÚ memory_infoÎs    zProcess.memory_infocCs| ¡tdS)Nr<)rÖrÁ)rÈrprprqr<ÚszProcess.create_timecCs trt |j¡St| ¡ƒSdS)N)ÚHAS_PROC_NUM_THREADSrirr¤rÚthreads)rÈrprprqÚ num_threadsÞs zProcess.num_threadscCs$| ¡}t |td|td¡S)Nr=r>)rÖrZpctxswrÁ)rÈrârprprqÚnum_ctx_switchesæs zProcess.num_ctx_switchescCsLt |j¡}g}x*|D]"\}}}t |||¡}| |¡qWtrH| ¡|S)N)riZ proc_threadsr¤rZpthreadrurrÕ)rÈr§rˆZ thread_idÚutimeZstimerŠrprprqrèís zProcess.threadsÚinetc Cs|tkr(td|d dd„tDƒ¡fƒ‚tr¦t|\}}g}t |j¡}xL|D]D}|\}}} } } } } ||krN| |krNt||| | | | tƒ}|  |¡qNW|  ¡t |ƒSt|\}}t  |j||¡}g}x:|D]2}|\}}} } } } t||| | | | tƒ}|  |¡qÌWt r|  ¡|S)Nz+invalid %r kind argument; choose between %sz, cSsg|] }t|ƒ‘qSrp)r•)r–r—rprprqr˜ýsz'Process.connections..)r rržrrir r¤r r¡rurÕrœZproc_connectionsr)rÈr£r¥r¦rvr§rwr¨r©rªr«r¬r4r¤r­rprprqr›ùs4     zProcess.connectionsNcCst |j||j¡S)N)rZwait_pidr¤rÆ)rÈZtimeoutrprprqÚwaitsz Process.waitcCs t |j¡S)N)rŽÚ getpriorityr¤)rÈrprprqÚnice_getszProcess.nice_getcCst |j|¡S)N)rŽÚ setpriorityr¤)rÈÚvaluerprprqÚnice_set#szProcess.nice_setcCs| ¡td}t |d¡S)Nr4ú?)rÖrÁÚ PROC_STATUSESÚget)rÈÚcoderprprqr4'szProcess.statuscCs(| ¡}t |td|tddd¡S)Nr?r@r|)rÖrZpiorÁ)rÈrârprprqÚ io_counters-s   zProcess.io_counterscCs>tr|jdkrdStstr*t |j¡p(dSttr4dndƒ‚dS)z)Return process current working directory.rNz&supported only starting from FreeBSD 8rÙ)rr¤rÚHAS_PROC_OPEN_FILESriZproc_cwdrzr )rÈrprprqÚcwd6s z Process.cwdZmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countcCst‚dS)N)rz)rÈrprprqÚ_not_implementedKszProcess._not_implementedcCst |j¡}dd„|DƒS)z8Return files opened by process as a list of namedtuples.cSsg|]\}}t ||¡‘qSrp)rZ popenfile)r–Úpathr¨rprprqr˜Usz&Process.open_files..)rirr¤)rÈr§rprprqÚ open_filesQs zProcess.open_filescCst |j¡}tr| ¡|S)z=Return the number of file descriptors opened by this process.)rirr¤rrÕ)rÈrvrprprqÚnum_fds\s zProcess.num_fdscCs t |j¡S)N)riZproc_cpu_affinity_getr¤)rÈrprprqÚcpu_affinity_getjszProcess.cpu_affinity_getc Cs¬ttttƒƒƒƒ}x$|D]}||krtd||fƒ‚qWyt |j|¡Wn\tk r¦}z>|j t j t j fkr”x$|D]}||krttd||fƒ‚qtW‚Wdd}~XYnXdS)Nz#invalid CPU #%i (choose between %s)) Útupler°rrrriZproc_cpu_affinity_setr¤rrrÞZEDEADLK)rÈZcpusZallcpusr²r“rprprqÚcpu_affinity_setns  zProcess.cpu_affinity_setcCs t |j¡S)N)riZproc_memory_mapsr¤)rÈrprprqÚ memory_maps‡szProcess.memory_mapscCsP|dkrt |j|¡St|ƒdkr2tdt|ƒƒ‚|\}}t |j|||¡SdS)Nrz4second argument must be a (soft, hard) tuple, got %s)riZproc_getrlimitr¤rrr•Zproc_setrlimit)rÈÚresourceZlimitsZsoftZhardrprprqÚrlimit‹s  zProcess.rlimit)rì)N)N)0Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rÓrÕrÏrrÖr×rØrKrÝrÜrßrár3rãrärtr råræZmemory_full_infor<rérêrèr›rírïròr4r÷rùrZnt_mmap_groupedZ nt_mmap_extrúrørüÚHAS_PROC_NUM_FDSrýrþrrrrprprprqršIsf                !        rš)F)~rÚ contextlibrrÍrÚZxml.etree.ElementTreeZetreeZ ElementTreer~Ú collectionsrrrÙrrrrirrŽr r r r r rrrrrrZ_compatrrrrZ__extra__all__ZSIDLZ STATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDrÂZ STATUS_ZOMBIEZSWAITZSTATUS_WAITINGZSLOCKZ STATUS_LOCKEDrôZSDEADZ STATUS_WAKINGZSONPROCZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZ TCPS_SYN_SENTZ CONN_SYN_SENTZTCPS_SYN_RECEIVEDZ CONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZ TCPS_CLOSEDZ CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZ TCPS_LAST_ACKZ CONN_LAST_ACKZ TCPS_LISTENZ CONN_LISTENZ TCPS_CLOSINGZ CONN_CLOSINGZPSUTIL_CONN_NONEZ CONN_NONEr¡Z getpagesizeZPAGESIZEZAF_LINKr‘ZHAS_PER_CPU_TIMESrçrør ÚdictrÁrLrWr]Zpfullmemrardrerfrrrsrtrryrxr{r…r†Z disk_usageZdisk_io_countersrŒZ net_if_addrsr”r r¯r´r¸r¹r»r¼r™r¾rÅrÏÚcontextmanagerrÑÚobjectršrprprprqÚs(                                    # (