<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    =_c                 @   sL  d Z ddlZddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! dddgZ"e# Z$ej%Z%ej&dkZ'dZ(dZ)ej*ej+ej,ej-ej.ej/ej0ej1ej2ej3ej4ej-ej5ej6iZ7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMejNejOejPe(ejQe)iZReSddd d!d"d#d$d%d&d'd(d)d*ZTed+d,d-d.d/gZUed0d,d-d1d2gZVed3d4d5d6d7d8gZWed9d:d;gZXeXZYed<d=d:d>d?gZZed@dAdB[eZj\ Z]dCdD Z^dEdF Z_dGdH Z`dIdJ ZadKdL ZbdMdN ZcdOdP ZdejeZeejfZfdedRdSZgejhZhejiZidfdUdVZjdWdX ZkdYdZ Zld[d\ Zmd]d^ Znd_d` Zodadb ZpG dcdd ddeqZrdS )gz'Sun OS Solaris platform implementation.    N)
namedtuple)AF_INET   )_common)_psposix)_psutil_posix)_psutil_sunos)AccessDenied)AF_INET6)debug)get_procfs_path)isfile_strict)memoize_when_activated)NoSuchProcess)sockfam_to_enum)socktype_to_enum)usage_percent)ZombieProcess)b)FileNotFoundError)PermissionError)ProcessLookupError)PY3	CONN_IDLE
CONN_BOUNDPROCFS_PATHl        ZIDLEZBOUND                     	   
      )ppidrssvmscreate_timenicenum_threadsstatusttynruideuidgidegid	scputimesusersystemidleZiowait	pcputimeschildren_userchildren_systemsvmemtotalZ	availablepercentusedfreepmemr'   r(   pmmap_groupedpathZ	anonymouslocked	pmmap_extzaddr perms  c              C   sF   t dt } t dt  }}| | }t|| dd}t| ||||S )zReport virtual memory metrics.SC_PHYS_PAGESSC_AVPHYS_PAGESr   )round_)ossysconf	PAGE_SIZEr   r9   )r:   r=   Zavailr<   r;    rJ   B/opt/alt/python37/lib64/python3.7/site-packages/psutil/_pssunos.pyvirtual_memory{   s
    rL   c           	   C   s  t  \} }tjddtjd  ddgtjd}| \}}trL|	t
jj}|jdkrdtd|j | d	d
d }|stdd }}xL|D ]D}| }|dd \}	}
|tt|	d 7 }|tt|
d 7 }qW || }t||d
d}t||||| t |t S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:%sPATHZswapz-l)stdoutr   z'swap -l' failed (retcode=%s)
r   Nzno swap device(s) configuredr   r   i   )rF   )cextZswap_mem
subprocessPopenrG   environPIPEcommunicater   decodesysrN   encoding
returncodeRuntimeErrorstripsplitintr   r   sswaprI   )sinsoutprN   stderrlinesr:   r=   linetfr<   r;   rJ   rJ   rK   swap_memory   s,    


rg   c              C   s   t  } tdd t|  D  S )z-Return system-wide CPU times as a named tuplec             S   s   g | ]}t |qS rJ   )sum).0xrJ   rJ   rK   
<listcomp>   s    zcpu_times.<locals>.<listcomp>)rP   per_cpu_timesr2   zip)retrJ   rJ   rK   	cpu_times   s    ro   c              C   s   t  } dd | D S )z5Return system per-CPU times as a list of named tuplesc             S   s   g | ]}t | qS rJ   )r2   )ri   rj   rJ   rJ   rK   rk      s    z!per_cpu_times.<locals>.<listcomp>)rP   rl   )rn   rJ   rJ   rK   rl      s    rl   c               C   s$   y
t dS  tk
r   dS X dS )z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)rG   rH   
ValueErrorrJ   rJ   rJ   rK   cpu_count_logical   s    
rr   c               C   s   t  S )z1Return the number of physical CPUs in the system.)rP   Zcpu_count_physrJ   rJ   rJ   rK   cpu_count_physical   s    rs   c              C   s$   t  \} }}}d}t| |||S )z*Return various CPU stats as a named tuple.r   )rP   	cpu_statsr   	scpustats)ctx_switches
interruptssyscallsZtrapssoft_interruptsrJ   rJ   rK   rt      s    
rt   Fc             C   s   g }t  }x|D ]}|\}}}}|dkr.d}| sxyt|js@wW n4 tk
rv } ztd||f  wW dd}~X Y nX d }	}
t|||||	|
}|| qW |S )zReturn system disk partitions.Znone zskipping %r: %rN)	rP   disk_partitions
disk_usager:   OSErrorr   r   	sdiskpartappend)allretlist
partitions	partitiondevice
mountpointfstypeoptserrmaxfilemaxpathZntuplerJ   rJ   rK   r{      s$    

r{   c          
   C   s  t j }|dkr|dd | |krFtd| ddd |D f t j|  \}}t|}t }x|D ]}|\}}	}
}}}}|	|krqj|
|krqj|	t	t
fkr|rt j| }|rt j| }t| }t|	}	t|
}
|dkrt ||	|
||||}nt ||	|
|||}|| qjW 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   unixr   z+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |qS rJ   )repr)ri   rj   rJ   rJ   rK   rk     s    z#net_connections.<locals>.<listcomp>)r   	conn_tmapcopypoprq   joinrP   net_connectionssetr   r
   addrTCP_STATUSESr   r   sconnpconnaddlist)kind_pidZcmapZfamiliestypesrawlistrn   itemfdfamtype_laddrraddrr,   pidntrJ   rJ   rK   r      s8    




r   c              C   sV   t  } xH|  D ]<\}}|\}}}}ttdr:t|}t||||| |< qW | S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex)rP   net_if_statsitemshasattrr   r   	snicstats)rn   namer   isupduplexspeedmturJ   rJ   rK   r   !  s    

r   c               C   s   t  S )z:The system boot time expressed in seconds since the epoch.)rP   	boot_timerJ   rJ   rJ   rK   r   1  s    r   c              C   s`   g } t  }d}xJ|D ]B}|\}}}}}}	|s0q||kr<d}t|||||	}
| |
 qW | S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0	localhost)rP   usersr   suserr   )r   r   r   r   r3   ttyhostnameZtstampZuser_processr   r   rJ   rJ   rK   r   6  s    
r   c               C   s   dd t tt D S )z7Returns a list of PIDs currently running on the system.c             S   s   g | ]}|  rt|qS rJ   )isdigitr]   )ri   rj   rJ   rJ   rK   rk   P  s    zpids.<locals>.<listcomp>)rG   listdirr   r   rJ   rJ   rJ   rK   pidsN  s    r   c             C   s
   t | S )z&Check for the existence of a unix pid.)r   
pid_exists)r   rJ   rJ   rK   r   S  s    r   c                s   t   fdd}|S )zCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c          	      s   y | f||S  t tfk
rT   t| js>t| j| jnt| j| j| jY n\ tk
rt   t	| j| jY n< t
k
r   | jdkrdt krt	| j| jn  Y nX d S )Nr   )r   r   r   r   r   _namer   _ppidr   r	   r}   r   )selfargskwargs)funrJ   rK   wrapper\  s    


z wrap_exceptions.<locals>.wrapper)	functoolswraps)r   r   rJ   )r   rK   wrap_exceptionsX  s    r   c               @   s  e Zd ZdZdddddgZdd Zd	d
 Zdd Zdd Ze	e
dd Ze	e
dd Ze	e
dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd Ze	dd  Ze	d!d" Ze	d#d$ Ze	d%d& Ze	d'd( Ze	d)d* Ze	d+d, Ze	d-d. Ze	d/d0 Ze	d1d2 Ze	d3d4 ZeZe	d5d6 Ze	d7d8 Z e	d9d: Z!d;d< Z"e	dLd>d?Z#e$d@dAZ%e$d@dBZ&e	dCdD Z'e	dEdF Z(e	dGdH Z)e	dMdJdKZ*dIS )NProcessz1Wrapper class around underlying C implementation.r   r   r   _procfs_path_cachec             C   s   || _ d | _d | _t | _d S )N)r   r   r   r   r   )r   r   rJ   rJ   rK   __init__y  s    zProcess.__init__c             C   s   t d| j| jf  dS )z+Raise NSP if the process disappeared on us.z%s/%sN)rG   statr   r   )r   rJ   rJ   rK   _assert_alive  s    zProcess._assert_alivec             C   s(   | j |  | j|  | j|  d S )N)_proc_name_and_argscache_activate_proc_basic_info
_proc_cred)r   rJ   rJ   rK   oneshot_enter  s    zProcess.oneshot_enterc             C   s(   | j |  | j|  | j|  d S )N)r   cache_deactivater   r   )r   rJ   rJ   rK   oneshot_exit  s    zProcess.oneshot_exitc             C   s   t | j| jS )N)rP   Zproc_name_and_argsr   r   )r   rJ   rJ   rK   r     s    zProcess._proc_name_and_argsc             C   sT   | j dkr,tjd| j| j f s,t| j t| j | j}t|tt	ksPt
|S )Nr   z%s/%s/psinfo)r   rG   r@   existsr   r	   rP   Zproc_basic_infolenproc_info_mapAssertionError)r   rn   rJ   rJ   rK   r     s    

zProcess._proc_basic_infoc             C   s   t | j| jS )N)rP   Z	proc_credr   r   )r   rJ   rJ   rK   r     s    zProcess._proc_credc             C   s   |   d S )Nr   )r   )r   rJ   rJ   rK   r     s    zProcess.namec             C   s8   yt d| j| jf S  tk
r*   Y nX |   dS )Nz%s/%s/path/a.outrz   )rG   readlinkr   r   r}   cmdline)r   rJ   rJ   rK   exe  s    zProcess.exec             C   s   |   d dS )Nr   rC   )r   r\   )r   rJ   rJ   rK   r     s    zProcess.cmdlinec             C   s   t | j| jS )N)rP   Zproc_environr   r   )r   rJ   rJ   rK   rS     s    zProcess.environc             C   s   |   td  S )Nr)   )r   r   )r   rJ   rJ   rK   r)     s    zProcess.create_timec             C   s   |   td  S )Nr+   )r   r   )r   rJ   rJ   rK   r+     s    zProcess.num_threadsc             C   s   |   td  S )Nr*   )r   r   )r   rJ   rJ   rK   nice_get  s    zProcess.nice_getc             C   s&   | j dkrt| j | jt| j |S )N)r   r   )r   r	   r   
cext_posixsetpriority)r   valuerJ   rJ   rK   nice_set  s    
zProcess.nice_setc             C   s   |   td  | _| jS )Nr&   )r   r   r   )r   rJ   rJ   rK   r&     s    zProcess.ppidc             C   s`   y|   \}}}}}}W n8 tk
rP   |  td  }|  td  }d }Y nX t|||S )Nr.   r/   )r   r	   r   r   r   puids)r   real	effectivesaved_rJ   rJ   rK   uids  s    
zProcess.uidsc             C   s`   y|   \}}}}}}W n8 tk
rP   |  td  }|  td  }d }Y nX t|||S )Nr0   r1   )r   r	   r   r   r   r   )r   r   r   r   r   rJ   rJ   rK   gids  s    
zProcess.gidsc          
   C   sZ   yt | j| j}W n: tk
rN } z|jtjkr<ts<d}n W d d }~X Y nX tj	| S )N)g        g        g        g        )
rP   Zproc_cpu_timesr   r   r}   errno	EOVERFLOW	IS_64_BITr   r6   )r   timesr   rJ   rJ   rK   ro     s    zProcess.cpu_timesc             C   s   t | j| jS )N)rP   Zproc_cpu_numr   r   )r   rJ   rJ   rK   cpu_num  s    zProcess.cpu_numc          	   C   sx   | j }d}t|  td  }|tjkrhx>dD ]6}ytd|| j|f S  t	k
rb   d}w.Y q.X q.W |rt| 
  d S )NFr-   )r   r   r      z%s/%d/path/%dT)r   r   r   r   rP   ZPRNODEVrG   r   r   r   r   )r   procfs_path
hit_enoentr   rj   rJ   rJ   rK   terminal  s    

zProcess.terminalc             C   sH   | j }ytd|| jf S  tk
rB   td|| jf  d S X d S )Nz%s/%s/path/cwdz%s/%s)r   rG   r   r   r   r   )r   r   rJ   rJ   rK   cwd  s    zProcess.cwdc             C   s2   |   }|td  d }|td  d }t||S )Nr'   i   r(   )r   r   r>   )r   rn   r'   r(   rJ   rJ   rK   memory_info#  s    zProcess.memory_infoc             C   s   |   td  }t|dS )Nr,   ?)r   r   PROC_STATUSESget)r   coderJ   rJ   rK   r,   ,  s    zProcess.statusc       
      C   s   | j }g }td|| jf }d}x|D ]}t|}yt| j||\}}W nH tk
r } z*|jtj	krpt
spw(|jtjkrd}w( W d d }~X Y q(X t|||}	||	 q(W |r|   |S )Nz	%s/%d/lwpFT)r   rG   r   r   r]   rP   Zquery_process_threadEnvironmentErrorr   r   r   ENOENTr   pthreadr   r   )
r   r   rn   Ztidsr   tidutimeZstimer   r   rJ   rJ   rK   threads2  s*    
zProcess.threadsc          	   C   s   g }d}| j }d|| jf }x~td|| jf D ]f}tj||}tj|r2yt|}W n tk
rx   d}w2Y q2X t	|r2|
t|t| q2W |r|   |S )NFz
%s/%d/pathz%s/%d/fdT)r   r   rG   r   r@   r   islinkr   r   r   r   r   	popenfiler]   r   )r   r   r   r   Zpathdirr   r@   filerJ   rJ   rK   
open_filesS  s"    zProcess.open_filesc             c   s,  d| }t j|dt jt jd}| \}}trDdd ||fD \}}|jdkrd| krht| j| j	d| krt
| j| j	td	||f |d
dd }xt|D ]v\}}| }|dr|ddd }	||d   }
|
dkrtj}
n|
dkr
tj}
nd}
dtj|
|	dtjfV  qW dS )z<Get UNIX sockets used by process by parsing 'pfiles' output.z	pfiles %sT)shellrN   rb   c             S   s   g | ]}| tjjqS rJ   )rV   rW   rN   rX   )ri   rj   rJ   rJ   rK   rk   q  s   z-Process._get_unix_sockets.<locals>.<listcomp>r   zpermission deniedzno such processz%r command error
%srO   r   Nzsockname: AF_UNIXrC   SOCK_STREAM
SOCK_DGRAMr   rz   )rQ   rR   rT   rU   r   rY   lowerr	   r   r   r   rZ   r\   	enumeratelstrip
startswithr[   socketr   r   AF_UNIXr   	CONN_NONE)r   r   cmdra   rN   rb   rc   ird   r@   typerJ   rJ   rK   _get_unix_socketsh  s2    



zProcess._get_unix_socketsinetc             C   sP   t || jd}|s(td| j| jf  |dkrL|dd | | jD  |S )N)r   z%s/%s)r   r   c             S   s   g | ]}t j| qS rJ   )r   r   )ri   ZconnrJ   rJ   rK   rk     s    z'Process.connections.<locals>.<listcomp>)r   r   rG   r   r   extendr
  )r   r   rn   rJ   rJ   rK   connections  s    
zProcess.connectionsZmmapzpath rss anon lockedzaddr perms path rss anon lockedc             C   s   dd }| j }g }yt| j|}W n8 tk
r\ } z|jtjkrJtsJg S  W d d }~X Y nX d}x|D ]}|\}}	}
}}}}|||	}|dsyt	
d|| j|f }W nF tk
r } z(|jtjkrd|| j|f }d}n W d d }~X Y nX |||
||||f qhW |r|   |S )Nc             S   s0   dt | dd  dt |dd  df S )Nz%s-%sr   L)hexr[   )startendrJ   rJ   rK   toaddr  s    z#Process.memory_maps.<locals>.toaddrF[z%s/%s/path/%sT)r   rP   Zproc_memory_mapsr   r}   r   r   r   r  rG   r   r   r   r   )r   r  r   r   r   r   r   r   r   ZaddrsizeZpermr   r'   ZanonrA   rJ   rJ   rK   memory_maps  s4    


zProcess.memory_mapsc             C   s   t td| j| jf S )Nz%s/%s/fd)r   rG   r   r   r   )r   rJ   rJ   rK   num_fds  s    zProcess.num_fdsc             C   s   t jt| j| j S )N)r   pctxswrP   Zproc_num_ctx_switchesr   r   )r   rJ   rJ   rK   num_ctx_switches  s    zProcess.num_ctx_switchesNc             C   s   t | j|| jS )N)r   Zwait_pidr   r   )r   timeoutrJ   rJ   rK   wait  s    zProcess.wait)r  )N)+__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r   r   r   r   r   rS   r)   r+   r   r   r&   r   r   ro   r   r   r   r   Zmemory_full_infor,   r   r   r
  r  r   Znt_mmap_groupedZnt_mmap_extr  r  r  r  rJ   rJ   rJ   rK   r   t  sT   	


! 

/r   )F)r   )sr  r   r   rG   r  rQ   rW   collectionsr   r   rz   r   r   r   r   r   rP   r	   r
   r   r   r   r   r   r   r   r   r   _compatr   r   r   r   r   Z__extra__all__ZgetpagesizerI   ZAF_LINKmaxsizer   r   r   ZSSLEEPSTATUS_SLEEPINGZSRUNSTATUS_RUNNINGZSZOMBSTATUS_ZOMBIEZSSTOPSTATUS_STOPPEDZSIDLSTATUS_IDLEZSONPROCZSWAITSTATUS_WAITINGr   ZTCPS_ESTABLISHEDCONN_ESTABLISHEDZTCPS_SYN_SENTCONN_SYN_SENTZTCPS_SYN_RCVDCONN_SYN_RECVZTCPS_FIN_WAIT_1CONN_FIN_WAIT1ZTCPS_FIN_WAIT_2CONN_FIN_WAIT2ZTCPS_TIME_WAITCONN_TIME_WAITZTCPS_CLOSED
CONN_CLOSEZTCPS_CLOSE_WAITCONN_CLOSE_WAITZTCPS_LAST_ACKCONN_LAST_ACKZTCPS_LISTENCONN_LISTENZTCPS_CLOSINGCONN_CLOSINGZPSUTIL_CONN_NONEr  Z	TCPS_IDLEZ
TCPS_BOUNDr   dictr   r2   r6   r9   r>   Zpfullmemr?   r   _fieldsrB   rL   rg   ro   rl   rr   rs   rt   Zdisk_io_countersr|   r{   Znet_io_countersZnet_if_addrsr   r   r   r   r   r   r   objectr   rJ   rJ   rJ   rK   <module>   s   


	&	
!
%