????

Your IP : 18.226.34.223


Current Path : /lib/python3.9/site-packages/iotop/__pycache__/
Upload File :
Current File : //lib/python3.9/site-packages/iotop/__pycache__/ui.cpython-39.pyc

a

��Jc�b�@spddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZddlmZddlmZddlmZddlmZgd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Ze�ZGdd�de �Z!Gdd�de �Z"Gdd�de �Z#Gdd�de �Z$Gdd�de �Z%Gdd�de&�Z'dd �Z(d!d"�Z)d#d$�Z*d%e
j+dZ,d&d'�Z-dS)(�)�print_functionN)�	find_uids�TaskStatsNetlink�ProcessList�Stats�sysctl_task_delayacct)�
ThreadInfo)�VERSION)�ioprio)�IoprioSetError)�B�K�M�G�T�P�EcCs`|dkrd}n|dkr"d}|}ndStt�|dd�d�}d|t|�dd|>t|fS)	Nr��-z0.00 B��
z	%s%.2f %s�)�int�math�log�float�UNITS)�size�signZexpo�r�,/usr/lib/python3.9/site-packages/iotop/ui.py�
human_size-sr!cCs|jrd|dSt|�S)Nz%.2f Kg�@)�	kilobytesr!)�options�bytesrrr �format_size9sr%cCst||ot|�|�dS)Nz/s)r%r)r#r�durationrrr �format_bandwidth>sr'cs��fdd�}�jr4|j}�fdd�}t��|j�n|j}�fdd�}||j�}||j�}||j��}|j|j	}	t
d|	�}	||	��}
||||
fS)Ncsdtd|�d�S)Nz%.2f %%g��(\�X@g�cA)�min)Zdelay)r&rr �
delay2percentDsz#format_stats.<locals>.delay2percentcs
t�|�S�N)r%�rr&�r#rr �<lambda>H�zformat_stats.<locals>.<lambda>cst�||�Sr*)r'r+r,rr r-Ls�r)�accumulated�stats_accum�timeZstats_accum_timestamp�stats_delta�blkio_delay_total�swapin_delay_total�
read_bytes�write_bytes�cancelled_write_bytes�max)r#Zprocessr&r)�statsZdisplay_format�io_delay�swapin_delayr5Z
written_bytesr6r)r&r#r �format_statsAs



r<c
CsJzttd������WStyD}zt|�WYd}~dSd}~00dS)Nz/proc/sys/kernel/pid_max�)�len�open�read�strip�	Exception�print)�errr �get_max_pid_widthVs
rEc@seZdZdS)�CancelInputN��__name__�
__module__�__qualname__rrrr rFdr.rFc@seZdZdS)�
InvalidIntNrGrrrr rKer.rKc@seZdZdS)�
InvalidPidNrGrrrr rLfr.rLc@seZdZdS)�
InvalidTidNrGrrrr rMgr.rMc@seZdZdS)�InvalidIoprioDataNrGrrrr rNhr.rNc	@s�eZdZdd�dfdd�dfdd�dfdd�dfdd�dfd	d�dfd
d�dfdd�dfgZdd
�Zdd�Zdd�Zdd�Zdd�Zd0dd�Z	d1dd�Z
dd�Zdd�Zdd �Z
d!d"�Zd2d#d$�Zd3d&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�ZdS)4�IOTopUIcCs|jSr*)�pid��p�srrr r-qr.zIOTopUI.<lambda>FcCs|��Sr*)Zioprio_sort_keyrQrrr r-rr.cCs|��Sr*)�get_userrQrrr r-sr.cCs|jSr*)r5rQrrr r-tr.TcCs|j|jSr*)r6r7rQrrr r-ur.cCs|jSr*)r4rQrrr r-vr.cCs|jpt|jp|j�Sr*)r3rr5r6rQrrr r-yscCs|��Sr*)�get_cmdlinerQrrr r-{r.cCsr||_||_d|_tj|jd|_|jjsn||_|��zt	�
�t	��t	�d�Wnt	j
ylYn0dS)N�rr)�process_listr#�sorting_keyrO�sorting_keys�sorting_reverse�batch�win�resize�cursesZuse_default_colorsZstart_color�curs_set�error)�selfr\rWr#rrr �__init__~szIOTopUI.__init__cCs|j��\|_|_dSr*)r\Zgetmaxyx�height�width�rarrr r]�szIOTopUI.resizec

CsXd}t��}|jjs.|�tj��tjtj	B�|jj
dusH||jj
k�rT|j��\}}|�
|dk|||jj�|jj
dur�|d7}||jj
kr��qTn|dkr�d}z|�|jjd�}WnDtjy�}z*|jr�|jdtjkr�g}n�WYd}~n
d}~00|D]&\}}|tjtjB@�rt�d��q|jj�s:|��|r.|j��}	|�|	�q.dS)Nrrg@�@)�select�pollr#r[�register�sys�stdin�filenoZPOLLINZPOLLPRI�
iterationsrW�refresh_processes�refresh_displayr&�
delay_secondsr`�args�errnoZEINTRZPOLLERRZPOLLHUP�exitr]r\�getch�
handle_key)
rarlrg�total�actualZeventsrD�fdZevent�keyrrr �run�s>
��

zIOTopUI.runcCs|j|_dSr*)rZrerrr �reverse_sorting�szIOTopUI.reverse_sortingcCs�|j}|j|7_td|j�|_tttj�d|j�|_|jsh|jdvrh|dkrZd|_n|dkrhd|_||jkr�tj|jd|_dS)Nrr�r=rV��)rXr8r(r>rOrY�
has_swapin_iorZ)raZdeltaZorig_sorting_keyrrr �adjust_sorting_key�s

zIOTopUI.adjust_sorting_keyNcCs�|j�ddtd�tjB|j�|j�dd|tj�|j��t�	�t�
d�|j�dt|��}t�
d�t�
�|dvr~|S|r�t��|S)Nrr� )Nr)r\�hline�ordr^�A_NORMALrd�addstr�A_BOLD�refreshZechor_Zgetstrr>ZnoechorF�ra�prompt�defaultZempty_is_cancel�inprrr �
prompt_str�s


zIOTopUI.prompt_strcCs6|�|||�}z
t|�WSty0t��Yn0dSr*)r�r�
ValueErrorrKr�rrr �
prompt_int�s

zIOTopUI.prompt_intcCs<z|�d�WSty$t��Ynty6�Yn0dS)NzPID to ionice: )r�rKrLrFrerrr �
prompt_pid�s
zIOTopUI.prompt_pidcCs<z|�d�WSty$t��Ynty6�Yn0dS)NzTID to ionice: )r�rKrMrFrerrr �
prompt_tid�s
zIOTopUI.prompt_tidcCsbz.|dur|�d||d�}n|�ddd�}WntyFt��Yn0|dksX|dkr^t��|S)Nz'I/O priority data (0-7, currently %s): FzI/O priority data (0-7): rr})r�rKrN)ra�ioprio_datar�rrr �prompt_data�s��zIOTopUI.prompt_datacCsfz|�|�}Wnty$d}Yn0t|�d}|j�ddtd�tjB|j�|j�	dd|tj
�t|�}t|�D]D\}}d|}	||ur�tj}
ntj}
|j�	d||	|
�|t|	�7}qt|j�
�}|tjtd�fvr�|dkr�|d8}q2q�|tjtd�fv�r||k�r|d7}q2q�|tjtd�td	�fv�r6||S|d
tjtjtjtd�td�fvr�t��q�q2dS)
N���rrr�� %s �l�r�
�
��q�Q)�indexr�r>r\r�r�r^r�rd�insstrr��	enumerate�	A_REVERSErs�KEY_LEFT�	KEY_RIGHTZ	KEY_ENTERZ
KEY_CANCELZ	KEY_CLOSEZKEY_EXITrF)rar�Zdisplay_listZret_listZselectedZset_len�offset�i�itemZdisplay�attrrxrrr �
prompt_set�s8

�zIOTopUI.prompt_setcCs4d}gd�}gd�}|dur d}|�||||�}|S)NzI/O priority class: )z	Real-timezBest-effortZIdle)Zrt�be�idler)r�)ra�ioprio_classr�Zclasses_promptZclasses_retr�rrr �prompt_classszIOTopUI.prompt_class�Error!cCsN|j�ddtd�tjB|j�|j�ddd|tj�|j��t	�
d�dS)Nrrr�z  %s  )r\r�r�r^r�rdr�r�r�r1�sleep)rar`rrr �prompt_error"s
zIOTopUI.prompt_errorcCs,|j�ddtd�tjB|j�|j��dS)Nrrr�)r\r�r�r^r�rdr�rerrr �prompt_clear(szIOTopUI.prompt_clearc"s��fdd�}�fdd�}�fdd�}�fdd�}td	�d
d�td�d
d�td��fdd�td��fdd�td�|td�|td�|td�|td�|td�|td�|td�|tj�fdd�tj�fdd�tj�fdd�tj�fdd�i}|�|dd��}|�dS)Ncs�jjdN_dS�NT)r#r/rrerr �toggle_accumulated-sz.IOTopUI.handle_key.<locals>.toggle_accumulatedcs�jjdN_dSr�)r#�onlyrrerr �toggle_only_io/sz*IOTopUI.handle_key.<locals>.toggle_only_iocs(�jjdN_�j���j��dSr�)r#�	processesrW�clearrmrrerr �toggle_processes1s
z,IOTopUI.handle_key.<locals>.toggle_processesc
sXz��jjr ���}�j�|�}n���}t|�jj�}|��}t	�
|�\}}��|�}|dkrdd}n
��|�}|�
||��j���j��Wn�ty�}z��d|j�WYd}~n�d}~0ty���d�Ynvty���d�Yn\t�y��d�Yn@t�y0��d�Yn$t�yJ���Yn
0���dS)Nr�rzError setting I/O priority: %szInvalid process id!zInvalid thread id!zInvalid I/O priority data!zInvalid integer!)r#r�r�rWZget_processr�r�taskstats_connection�
get_ioprior
Zto_class_and_datar�r�Z
set_ioprior�rmrr��errrLrMrNrKrFr�)rPZ	exec_unit�tidZioprio_valuer�r�rDrerr �ionice5s>��


$z"IOTopUI.handle_key.<locals>.ionicer�cSs
t�d�S�Nr�rirrrrrr r-Zr.z$IOTopUI.handle_key.<locals>.<lambda>r�cSs
t�d�Sr�r�rrrr r-\r.r�cs���Sr*�rzrrerr r-^r.�Rcs���Sr*r�rrerr r-`r.�a�A�o�OrRrr��Ics
��d�S)Nr��rrrerr r-rr.cs
��d�S)Nrr�rrerr r-tr.cs��ttj��Sr*�rr>rOrYrrerr r-vr.cs��ttj��Sr*r�rrerr r-xr.cSsdSr*rrrrr r-{r.)r�r^r�r�ZKEY_HOMEZKEY_END�get)rarxr�r�r�r�Zkey_bindings�actionrrer rt,sN$





�#zIOTopUI.handle_keycs��fdd�}�fdd�}tt|�jj����}tj�jd��jj	rPdd��ndd��|j
��fd	d��jd
��jjs�|�j
dd�=tt||��S)Nc
sRt�j|�jj�}|\}}}}dt}|jf}|d7}||��f7}|d7}||��dd�f7}|d7}|||f7}�jr�|d7}|||f7}n�jj	r�|d7}|d7}|d	7}||}|�
�}	�jj	�s.�jt|�}
d
|
kr�t|	�k�r.nn6|
dd
}|
|d}|	d|�d|	|d�}	||	7}�jj	�sN|d�j�}|S)
Nz%%%ddz %4sz %-8s�z
 %11s %11sz %7s %7sr�)z
?unavailable?r�rr�~)
r<r#rWr&�
MAX_PID_WIDTHrPr�rTr~r[rUrdr>)
rRr9r:r;r5r6�format�params�lineZcmdlineZremaining_lengthZlen1Zoffset2rerr r�s:

z IOTopUI.get_data.<locals>.formatcs�jjp|��jj�Sr*)r#r�Zdid_some_ior/�rRrerr �
should_format�s
�z'IOTopUI.get_data.<locals>.should_formatrcSs|jSr*)r0r�rrr r-�r.z"IOTopUI.get_data.<locals>.<lambda>cSs|jSr*)r2r�rrr r-�r.cs�|�|��Sr*rr�)rx�stats_lambdarr r-�r.)rx�reverser)�list�filterrWr��valuesrOrYrXr#r/�sortrZr[rc�map)rar�r�r�r)rxrar�r �get_data~s
�
�zIOTopUI.get_datac	sldt�j|d|��d�t�j|d|��d�fdt�j|d|��d�t�j|d|��d�fg�tdtd�d}�jjr�|d7}n|d	7}|d
ddd
dddg}tj�_�jr�t	�dkr�d�_��
d����}�jj�rdg|}t�
d���fdd�|D�}�fdd��D���jj�r��jjdk�rf�D]}t|��q6�jjt|�k�rftd�|��|D]}	t|	�d���qjtj���nڈj��t��D]$\�}�j��d|d�j���q��j�t��dtd�tj B�j��j}
t!t|��D]���j�s�dv�r�q�tj }|�}��j"k�r:|dd�}��j"k�rf|tj#O}|�j$�r`d�pbd7}|d|
�}|
t|�8}
�j�||��q��jdu�r�d}
nd}
t%t|��j&dtt'|
���}t!|�D]j�zL���fdd�}z||��Wn&t(�y||��d��Yn0Wntj)�y4Yn0�q�|
�r^�j�*�j&t��d|
tj#��j�+�dS) Nz,Total DISK READ : %s | Total DISK WRITE : %sr�rz,Actual DISK READ: %s | Actual DISK WRITE: %s�r��PIDZTIDz  PRIOz  USERz     DISK READz  DISK WRITEz  SWAPINz      IOz    COMMANDFz    TIMEz	%H:%M:%S csg|]}�|�qSrr)�.0r���current_timerr �
<listcomp>�r.z+IOTopUI.refresh_display.<locals>.<listcomp>csg|]}�|�qSrr)r�rSr�rr r��r.rrzutf-8r{�>�<zoCONFIG_TASK_DELAY_ACCT and kernel.task_delayacct sysctl not enabled in kernel, cannot determine SWAPIN and IO %cs �j��t��dd|�dS)Nrr)r\r�r>)r�)r�ra�summaryrr �
print_line�sz+IOTopUI.refresh_display.<locals>.print_line),r'r#�rjustr8r�r�rZhas_blkio_delay_totalr~rrr�r1�strftimer[�quietrCr�join�encoderi�stdout�flushr\Zeraser�r�rdr�r>r�r^r��rangerXr�rZr(rc�bool�UnicodeEncodeErrorr`r�r�)raZ
first_timerurvr&rPZtitles�linesrSr�Zremaining_colsr��titleZ
status_msgZ	num_linesr�r)r�r�rar�r rn�s����	

�






�
 
�zIOTopUI.refresh_display)NT)NT)N)r�)rHrIrJrYrbr]ryrzrr�r�r�r�r�r�r�r�r�rtr�rnrrrr rOns8





�
�!


 
	
R1rOcCsf|jrt�tjtj�n$dd�}t�tj|�t�tj|�t|�}t||�}t|||�}|�	�dS)Nc_st�d�dSr�r�)rp�kwargsrrr �
clean_exit	sz$run_iotop_window.<locals>.clean_exit)
r[�signal�SIGPIPE�SIG_DFL�SIGINT�SIGTERMrrrOry)r\r#r�r�rWZuirrr �run_iotop_windows
r�c
Cs�z$|jrtd|�WSt�t|�WSWn�ty~}zB|jtjkrht|tj	d�tdtj	d�t�
d�n�WYd}~ndd}~0tjy�}zBt|�}|�
d�dkr�|�
d�dks�|�
d�dkr�n�WYd}~n
d}~00dS)N)�filea�
The Linux kernel interfaces that iotop relies on now require root priviliges
or the NET_ADMIN capability. This change occured because a security issue
(CVE-2011-2494) was found that allows leakage of sensitive data across user
boundaries. If you require the ability to run iotop as a non-root user, please
configure sudo to allow you to run iotop as root.

Please do not file bugs on iotop about this.rZERRrz
nocbreak()zendwin())r[r�r^�wrapper�OSErrorrq�EPERMrCri�stderrrrr`�str�find)r#rDZstrerrr �	run_iotops*���r�cCs�d}z:ddl}ddl}td�|�dt�t�|�|�|�}WnVty�ddl}ddl	}|j
|dd�}td�|�|�|��|j
�|�}Yn0|��|�dd	�|�d
�|�d
�t�|�dS)Nz
iotop.profrzProfiling using cProfilezcontinuation()r)Z
lineeventszProfiling using hotshotr1Zcalls�2)�cProfile�pstatsrCZrunctx�globals�localsr�ImportError�hotshotZ
hotshot.statsZProfileZruncall�closer9�loadZ
strip_dirsZ
sort_statsZprint_statsZ
print_callees�os�remove)ZcontinuationZ	prof_filer�rr9rZprofrrr �_profile6s(


r	aF%s [OPTIONS]

DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling
period. SWAPIN and IO are the percentages of time the thread spent respectively
while swapping in and waiting on I/O more generally. PRIO is the I/O priority at
which the thread is running (set using the ionice command).

Controls: left and right arrows to change the sorting column, r to invert the
sorting order, o to toggle the --only option, p to toggle the --processes
option, a to toggle the --accumulated option, i to change I/O priority, q to
quit, any other key to force a refresh.c	s�zt�tjd�Wntjy.td�Yn0tjtdtd�}|j	ddddd	d
d�|j	dd
dddd�|j	ddddddd�|j	dddddddd�|j	d d!dd"d#d$d%d&�|j	d'd(d)d*d#d+d,d&�|j	d-d.dd/d	d0d�|j	d1d2dd3d	d4d�|j	d5d6dd7d	d8d�|j	d9d:dd;d<d�|j	d=d>d?d@dAdBd�|j	dCddDd	tj
d�|��\�}|�rr|�dEdF�
|��t���j�p�g�_�j�p��j�p��j�_�fdGdH���j�rʇfdIdJ�}t|�n��dS)KNrz8unable to set locale, falling back to the default localeziotop )�usage�versionz-oz--only�
store_truer�Fz1only show processes or threads actually doing I/O)r��destr��helpz-bz--batchr[znon-interactive mode)r�r
rz-nz--iterrrlZNUMz-number of iterations before ending [infinite])�typer
�metavarrz-dz--delayrroz#delay between iterations [1 second]ZSECr)rr
rrr�z-pz--pid�pids�appendz"processes/threads to monitor [all]r�)rr
r�rrz-uz--userr�Zuserszusers to monitor [all]ZUSERz-Pz--processesr�z$only show processes, not all threadsz-az
--accumulatedr/z)show accumulated I/O instead of bandwidthz-kz--kilobytesr"z.use kilobytes instead of a human friendly unitz-tz--timer1z.add a timestamp on each line (implies --batch)z-qz--quiet�countr�rz/suppress some lines of header (implies --batch)z	--profile�profilezUnexpected arguments: r�cst��Sr*)r�rr,rr r-�r.zmain.<locals>.<lambda>csz
��WnYn0dSr*rr)�	main_looprr �safe_main_loop�s
zmain.<locals>.safe_main_loop)�locale�	setlocale�LC_ALL�ErrorrC�optparseZOptionParser�USAGEr	Z
add_optionZ
SUPPRESS_HELP�
parse_argsr`r�rrr[r1r�rr	)�parserrprr)rr#r �main\st
������
�
�
���
�
r).Z
__future__rr^rqrrrrrfr�rir1Z
iotop.datarrrrrrZ
iotop.versionr	Ziotopr
Ziotop.iopriorrr!r%r'r<rEr�rBrFrKrLrMrN�objectrOr�r�r	�argvrrrrrr �<module>sL
$
�