HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //proc/self/root/usr/local/lib64/python3.9/site-packages/psutil/__pycache__/_psbsd.cpython-39.pyc
a

q�dg�}�@s�dZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddl
mZdd	l
m
Zdd
l
mZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!gZ"e�r�ej#ej$ej%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ej0iZ1n~e�r�ej#ej$ej'ej(ej)ej*ej2ej,ej+ej,ej%ej3ej4ej&iZ1n:e�r�ej#ej$ej'ej(ej)ej*ej+ej,ej%ej3ej4ej&iZ1ej5ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLiZMe�N�ZOejPZPeQed�ZReQed�ZSeQed�ZTeQed�ZUeVdddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6�ZWed7gd8��ZXed9gd:��ZYed;gd<��ZZeZZ[ed=gd>��Z\ed?d@�Z]edAdB�Z^e�r8edCgdD��Z_nedCgdE��Z_dFdG�Z`dHdI�ZadJdK�ZbeR�rndLd�ZcndMd�ZcdNec_ddOdP�Zee�s�e�r�dQdR�ZfndSdR�ZfdTdU�Zge�r�dVdW�Zhne�r�dXdW�ZhdvdYdZ�ZiejjZjejkZkejlZlejmZmd[d\�Znd]d^�Zoe�rd_d`�Zpdadb�Zqdcdd�Zrdedf�Zsedgdh��Ztdidj�Zue�rDdkdl�Zvne�rTdmdl�ZvnejvZvdndo�Zwdpdq�Zxejydrds��ZzGdtdu�du�Z{dS)wz5FreeBSD, OpenBSD and NetBSD platforms implementation.�N)�defaultdict)�
namedtuple)�ElementTree�)�_common)�_psposix)�_psutil_bsd)�
_psutil_posix)�FREEBSD)�NETBSD)�OPENBSD)�AccessDenied)�
NoSuchProcess)�
ZombieProcess)�	conn_tmap)�conn_to_ntuple)�debug)�memoize)�memoize_when_activated)�
usage_percent)�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)�total�	available�percent�used�free�active�inactive�buffers�cached�shared�wired�	scputimes��user�nice�system�idle�irq�pmem)rGrH�text�data�stack�	pcputimes)r\r^�
children_user�children_system�
pmmap_grouped�*path rss, private, ref_count, shadow_count�	pmmap_ext�6addr, perms path rss, private, ref_count, shadow_count�sdiskio)�
read_count�write_count�
read_bytes�write_bytesZ	read_timeZ
write_timeZ	busy_time)rmrnrorpcCs�t��}tr�|\}}}}}}tdd��X}|D]B}|�d�rPt|��d�d}	q,|�d�r,t|��d�d}
q,Wd�n1s�0Y||}||}n,|\}}}}}}}	}
|||}|||}t|||dd�}
t|||
|||||	||
|�S)Nz
/proc/meminfo�rbsBuffers:ris
MemShared:�Zround_)	�cextZvirtual_memr�open�
startswith�int�splitrrN)ZmemrOrSrTrUrYrW�f�linerVrXrRZavailrQ�rz�9/usr/local/lib64/python3.9/site-packages/psutil/_psbsd.py�virtual_memory�s8

4
�r|cCs4t��\}}}}}t||dd�}t�||||||�S)z@System swap memory as (total, used, free, sin, sout) namedtuple.rrr)rsZswap_memrrZsswap)rOrRrS�sinZsoutrQrzrzr{�swap_memory�sr~cCs"t��\}}}}}t|||||�S)z,Return system per-CPU times as a namedtuple.)rs�	cpu_timesrZr[rzrzr{r�srcCs>g}t��D],}|\}}}}}t|||||�}|�|�q|S)�(Return system CPU times as a namedtuple.)rsrrZ�append)�retZcpu_tr\r]r^r_r`�itemrzrzr{r�scCs2t�dkrt�gStjr$d}t|��dt_t�gS)r�r�&supported only starting from FreeBSD 8T)�cpu_count_logicalrr�
__called__�NotImplementedError)�msgrzrzr{r
s
FcCst��S)z0Return the number of logical CPUs in the system.)rsr�rzrzrzr{r�sr�cCst�dkrdSdS)Nr)r�rzrzrzr{�cpu_count_coressr�cCs�d}t��}|durj|�d�}|dkrj|d|d�}t�|�}zt|�d��pRd}W|��n
|��0|s|t�dkr|dS|S)z-Return the number of CPU cores in the system.Nz	</groups>���r%zgroup/children/group/cpur)	rsZcpu_topology�rfindr�
fromstring�len�findall�clearr�)r��s�index�rootrzrzr{r�$s


c	Cs�trt��\}}}}}n�tr�t��\}}}}}}}tdd��4}|D]}|�d�rBt|��d�}qBWd�q�1sv0Yntr�t��\}}}}}}}t	�
||||�S)z*Return various CPU stats as a named tuple.z
/proc/statrqsintrrN)r
rs�	cpu_statsrrtrurvrwrrZ	scpustats)	ZctxswZintrsZ
soft_intrsZsyscallsZ_trapsZ_faults�_forksrxryrzrzr{r�?s�
2�r�c
Cs�g}t�}t|�D]�}zt�|�\}}Wnty>YqYn0|r�z t|�d�d�d�d�}Wnttfy~d}Yn0z t|�d�d�d�d�}Wnttfy�d}Yn0|�	t
�|||��q|S)z�Return frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
        � r��/rN)r��rangers�cpu_freqr�rvrw�
IndexError�
ValueErrorr�r�scpufreq)r��num_cpus�cpu�currentZavailable_freqZmin_freqZmax_freqrzrzr{r�as$
 
 
r�cCstt���}t�|dd�gS)Ng)�floatrsr�rr�)�currrzrzr{r�{sc	Cs@g}t��}|D]*}|\}}}}t�||||�}|�|�q|S)z�Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906.
    )rs�disk_partitionsrZ	sdiskpartr�)	�all�retlistZ
partitions�	partitionZdeviceZ
mountpointZfstype�opts�ntuplerzrzr{r��sr�c
Cs�t���}i}|D]�}z&t�|�}t�|�}t�|�\}}Wn2tyn}z|jtjkrZ�WYd}~qd}~00t	t
d�r�t
�|�}d�|�}d|v}	t
�
|	||||�||<q|S)z)Get NIC stats (isup, duplex, speed, mtu).N�	NicDuplex�,�running)�net_io_counters�keys�
cext_posixZ
net_if_mtuZnet_if_flagsZnet_if_duplex_speed�OSError�errnoZENODEV�hasattrrr��joinZ	snicstats)
�namesr�rMZmtu�flagsZduplex�speed�errZoutput_flagsZisuprzrzr{�net_if_stats�s$






�
r�c
Cs�|tjvr*td|d�dd�tD��f��t|\}}t�}trPt�d||�}ntrbt�d|�}nt�||�}|D]6}|\}}}}	}
}}t	||||	|
|t
|�}
|�|
�qrt|�S)z System-wide network connections.�+invalid %r kind argument; choose between %s�, cSsg|]}t|��qSrz��repr��.0�xrzrzr{�
<listcomp>��z#net_connections.<locals>.<listcomp>r�)
rrr�r��setrrs�net_connectionsrr�TCP_STATUSES�add�list)�kind�families�typesr��rawlistr��fd�fam�type�laddr�raddrr6�pid�ntrzrzr{r��s(
���r�cCsbzt��\}}}Wnty&YdS0|dk}|r<tj}n|dkrLtj}n|d}t�|||�S)zReturn battery info.Nrr��<)rs�sensors_batteryr�rZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)rQZminsleftZ
power_pluggedZsecsleftrzrzr{r��sr�c	Csttt�}t�}t|�D]X}z@t�|�\}}|dkr6d}d|}|d�t�||||��Wqt	ylYq0q|S)z?Return CPU cores temperatures if available, else an empty dict.rNzCore %sZcoretemp)
rr�r�r�rsZsensors_cpu_temperaturer�rZshwtempr�)r�r�r�r��highrMrzrzr{�sensors_temperatures�s�r�cCst��S)z:The system boot time expressed in seconds since the epoch.)rs�	boot_timerzrzrzr{r�sr�c	Csfg}t��}|D]P}|\}}}}}|dkr6ts2J�d}|dkr@qt�||pLd|||�}|�|�q|S)z:Return currently connected users as a list of namedtuples.r�N�~)rs�usersrrZsuserr�)	r�r�r�r\�tty�hostnameZtstampr�r�rzrzr{r�sr�cCs@ztd���Wn&ty$YdSty6YdS0dSdS)NrFT)�ProcessrMrr
rzrzrzr{�
_pid_0_existssr�cCs*t��}tr&d|vr&t�r&|�dd�|S)z7Returns a list of PIDs currently running on the system.r)rs�pidsrr��insert)r�rzrzr{r�'sr�cCs t�|�}|s|t�vSdSdS)NT�r�
pid_existsr��r��existsrzrzr{r�3s

r�cCs t�|�}|sdS|t�vSdS)NFr�r�rzrzr{r�>s
cCs>z$t�|�td}t�|�tjkWSty8YdS0dS)Nr6F)rs�proc_oneshot_info�kinfo_proc_map�
PROC_STATUSES�getr�
STATUS_ZOMBIEr�)r��strzrzr{�	is_zombieLs
r�cst����fdd��}|S)z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    cs�z�|g|�Ri|��WStyVt|j�rDt|j|j|j��nt|j|j��YnXtytt|j|j��Yn:t	y�|jdkr�dt
�vr�t|j|j��n��Yn0dS)Nr)rr�r�r�_name�_ppidrrr
r�r�)�self�args�kwargs��funrzr{�wrapperYs


z wrap_exceptions.<locals>.wrapper)�	functools�wraps)r�r�rzr�r{�wrap_exceptionsTsr�c	cspz
dVWn`ttfyLt|j�r:t|j|j|j��nt|j|j��Yn tyjt	|j|j��Yn0dS)z8Same as above, for routines relying on reading /proc fs.N)
rrr�r�rr�r�rrr
)�instrzrzr{�wrap_exceptions_procfsos

r�c@s�eZdZdZgd�Zdd�Zdd�Zeedd���Z	d	d
�Z
dd�Zed
d��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zer�edd ��Zed!d"��ZeZed#d$��Zed%d&��Zed'd(��Zed)d*��ZedLd,d-��ZedMd/d0��Zed1d2��Zed3d4��Z ed5d6��Z!ed7d8��Z"ed9d:��Z#e$d;d<�Z%e$d;d=�Z&d>d?�Z'e(�r�ed@dA��Z)ne'Z)e*�r�edBdC��Z+ne'Z+e�r�edDdE��Z,edFdG��Z-edHdI��Z.edNdJdK��Z/d.S)Or�z1Wrapper class around underlying C implementation.)�_cacher�r�r�cCs||_d|_d|_dS�N)r�r�r�)r�r�rzrzr{�__init__�szProcess.__init__cCst�|j�dS)z+Raise NSP if the process disappeared on us.N)rs�	proc_namer��r�rzrzr{�
_assert_alive�szProcess._assert_alivecCs$t�|j�}t|�tt�ks J�|S)z;Retrieves multiple process info in one shot as a raw tuple.)rsr�r�r�r��r�r�rzrzr{�oneshot�szProcess.oneshotcCs|j�|�dSr�)r�Zcache_activater�rzrzr{�
oneshot_enter�szProcess.oneshot_entercCs|j�|�dSr�)r�Zcache_deactivater�rzrzr{�oneshot_exit�szProcess.oneshot_exitcCs(|��td}|dur|St�|j�S)NrM)r�r�rsr�r�)r�rMrzrzr{rM�szProcess.namecCs�tr|jdkrdSt�|j�Strj|jdkr0dSt|�� t�d|j�Wd�S1s^0Yn |��}|r�t	|d�p�dSdSdS)Nr�z/proc/%s/exe)
r
r�rsZproc_exerr��os�readlink�cmdliner)r�rrzrzr{�exe�s


0zProcess.exec
Cs�tr|jdkrgStr�zt�|j�WSty�}zt|jtjkr�t|j�r^t	|j|j
|j��q�t|j�s|t
|j|j
|j��q�td|�gWYd}~Sn�WYd}~q�d}~00nt�|j�SdS)Nrz'ignoring %r and returning an empty list)rr�rrsZproc_cmdliner�r��EINVALr�rr�r�r�rr)r�r�rzrzr{r�s

zProcess.cmdlinecCst�|j�Sr�)rsZproc_environr�r�rzrzr{�environ�szProcess.environcCs<|��td}t��}z
||WSty6YdS0dS)Nr=)r�r�rZget_terminal_map�KeyError)r�Ztty_nrZtmaprzrzr{�terminal�s
zProcess.terminalcCs|��td|_|jS)Nr5)r�r�r�r�rzrzr{r5�szProcess.ppidcCs.|��}t�|td|td|td�S)Nr7r8r9)r�rZpuidsr��r�Zrawtuplerzrzr{�uids�s


�zProcess.uidscCs.|��}t�|td|td|td�S)Nr:r;r<)r�rZpgidsr�rrzrzr{�gids�s


�zProcess.gidscCs8|��}t�|td|td|td|td�S)NrCrDrErF)r�rrer�rrzrzr{r�s



�zProcess.cpu_timescCs|��tdS)NrL�r�r�r�rzrzr{�cpu_numszProcess.cpu_numcCs@|��}t|td|td|td|td|td�S)NrGrHrIrJrK)r�rar�rrzrzr{�memory_info
s




�zProcess.memory_infocCs|��tdS)Nr>r
r�rzrzr{r>szProcess.create_timecCs trt�|j�St|���SdSr�)�HAS_PROC_NUM_THREADSrsrr�r��threadsr�rzrzr{�num_threadsszProcess.num_threadscCs$|��}t�|td|td�S)Nr?r@)r�rZpctxswr�rrzrzr{�num_ctx_switches#s


�zProcess.num_ctx_switchescCsHt�|j�}g}|D]"\}}}t�|||�}|�|�qtrD|��|Sr�)rsZproc_threadsr�rZpthreadr�rr�)r�r�r��	thread_id�utimeZstimer�rzrzr{r+szProcess.threads�inetc	Cs�|tvr(td|d�dd�tD��f��t|\}}g}trLt�|j|�}n&trbt�|j||�}nt�|j||�}|D]P}|dd�\}}}	}
}}t	r�||vsv|	|vr�qvt
|||	|
||t�}
|�|
�qv|�
�|S)Nr�r�cSsg|]}t|��qSrzr�r�rzrzr{r�<r�z+Process.net_connections.<locals>.<listcomp>r")rr�r�rrsr�r�rZproc_net_connectionsr
rr�r�r�)r�r�r�r�r�r�r�r�r�r�r�r�r6r�rzrzr{r�7s0���zProcess.net_connectionsNcCst�|j||j�Sr�)rZwait_pidr�r�)r��timeoutrzrzr{�waitUszProcess.waitcCst�|j�Sr�)r��getpriorityr�r�rzrzr{�nice_getYszProcess.nice_getcCst�|j|�Sr�)r��setpriorityr�)r��valuerzrzr{�nice_set]szProcess.nice_setcCs|��td}t�|d�S)Nr6�?)r�r�r�r�)r��coderzrzr{r6aszProcess.statuscCs(|��}t�|td|tddd�S)NrArBr�)r�rZpior�rrzrzr{�io_countersgs

�zProcess.io_counterscCs:tr|jdkrdStstr&t�|j�Sttr0dnd��dS)z)Return process current working directory.rr�r�N)rr�r�HAS_PROC_OPEN_FILESrsZproc_cwdr�r
r�rzrzr{�cwdqs
�zProcess.cwdZmmaprirkcCst�dSr�)r�r�rzrzr{�_not_implemented�szProcess._not_implementedcCst�|j�}dd�|D�S)z8Return files opened by process as a list of namedtuples.cSsg|]\}}t�||��qSrz)rZ	popenfile)r��pathr�rzrzr{r��r�z&Process.open_files.<locals>.<listcomp>)rsrr�)r�r�rzrzr{�
open_files�szProcess.open_filescCst�|j�}tr|��|S)z=Return the number of file descriptors opened by this process.)rsrr�rr�r�rzrzr{�num_fds�szProcess.num_fdscCst�|j�Sr�)rsZproc_cpu_affinity_getr�r�rzrzr{�cpu_affinity_get�szProcess.cpu_affinity_getc
Cs�tttt����}|D]}||vrtd||f��qzt�|j|�WnZty�}zB|j	t	j
t	jfvr�|D]}||vrltd||f��ql�WYd}~n
d}~00dS)Nz#invalid CPU #%i (choose between %s))�tupler�r�rr�rsZproc_cpu_affinity_setr�r�r�rZEDEADLK)r�ZcpusZallcpusr�r�rzrzr{�cpu_affinity_set�s$
���zProcess.cpu_affinity_setcCst�|j�Sr�)rsZproc_memory_mapsr�r�rzrzr{�memory_maps�szProcess.memory_mapscCsP|durt�|j|�St|�dkr2tdt|���|\}}t�|j|||�SdS)Nrz4second argument must be a (soft, hard) tuple, got %s)rsZproc_getrlimitr�r�r�r�Zproc_setrlimit)r��resourceZlimitsZsoft�hardrzrzr{�rlimit�s��zProcess.rlimit)r)N)N)0�__name__�
__module__�__qualname__�__doc__�	__slots__r�r�r�rr�r�r�rMrrrrr5rr	rr
rrZmemory_full_infor>rrrr�rrrr6rrrZnt_mmap_groupedZnt_mmap_extr rr"�HAS_PROC_NUM_FDSr#r$r&r'r*rzrzrzr{r��s�








	










	
��


r�)F)|r.�
contextlibr�r�r��collectionsrrZ	xml.etreerr�rrrrsr	r�r
rrr
rrrrrrrrZ_compatrrrrZ__extra__all__ZSIDLZSTATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDZSZOMBr�ZSWAITZSTATUS_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_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZ
TCPS_LAST_ACKZ
CONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONEr�ZgetpagesizeZPAGESIZEZAF_LINKr�ZHAS_PER_CPU_TIMESr
rr0�dictr�rNrZraZpfullmemrerhrjrlr|r~rrr�r�r�r�r�r��
disk_usageZdisk_io_countersr�Znet_if_addrsr�r�r�r�r�r�r�r�r�r�r��contextmanagerr�r�rzrzrzr{�<module>sB�	��
�



�$�����
/