Your IP : 216.73.216.224


Current Path : /lib/python3/dist-packages/iotop/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/iotop/__pycache__/ui.cpython-38.pyc

U

$�DYOk�	@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZz eed�szddl
m
Z
e
e_
Wn eefk
r�eje_
YnXddlmZddlmZmZmZmZddlmZddlmZdd	lmZdd
lmZddd
ddddgZdd�Zdd�Z dd�Z!dd�Z"dd�Z#e#�Z$Gdd�de%�Z&Gdd�de%�Z'Gd d!�d!e%�Z(Gd"d#�d#e%�Z)Gd$d%�d%e%�Z*Gd&d'�d'e+�Z,d(d)�Z-d*d+�Z.d,d-�Z/d.e
j0dZ1d/d0�Z2dS)1�)�print_functionN�	monotonic)r)�OrderedDict)�	find_uids�TaskStatsNetlink�ProcessList�Stats)�
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)�sizeZsignZexpo�r�*/usr/lib/python3/dist-packages/iotop/ui.py�
human_size;s�r!cCs|jrd|dSt|�S)Nz%.2f Kg�@)�	kilobytesr!)�options�bytesrrr �format_sizeIsr%cCst||ot|�|�dS)Nz/s)r%r)r#r�durationrrr �format_bandwidthOsr'cs��fdd�}�jr4|j}�fdd�}t��|j�n|j}�fdd�}||j�}||j�}||j��}|j	|j
}	td|	�}	||	��}
||||
fS)Ncsdtd|�d�S)Nz%.2f %%g��(\�X@g�cA)�min)Zdelay)r&rr �
delay2percentVsz#format_stats.<locals>.delay2percentcs
t�|�S�N)r%�rr&�r#rr �<lambda>Z�zformat_stats.<locals>.<lambda>cst�||�Sr*)r'r+r,rr r-^s�r)�accumulated�stats_accum�timerZstats_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_statsSs



r<c
CsLzttd������WStk
rF}zt|�WY�dSd}~XYnXdS)Nz/proc/sys/kernel/pid_max�)�len�open�read�strip�	Exception�print)�errr �get_max_pid_widthis
rEc@seZdZdS)�CancelInputN��__name__�
__module__�__qualname__rrrr rFxsrFc@seZdZdS)�
InvalidIntNrGrrrr rK|srKc@seZdZdS)�
InvalidPidNrGrrrr rL�srLc@seZdZdS)�
InvalidTidNrGrrrr rM�srMc@seZdZdS)�InvalidIoprioDataNrGrrrr rN�srNc	@s�eZdZdd�dfdd�dfdd�dfdd�dfdd�dfd	d�dfd
d�dfdd�dfgZdd
�Zdd�Zdd�Zdd�Zdd�Zdd�Z	d2dd�Z
d3dd�Zdd�Zdd �Z
d!d"�Zd#d$�Zd4d%d&�Zd5d(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�ZdS)6�IOTopUIcCs|jSr*)�pid��p�srrr r-�r.zIOTopUI.<lambda>FcCs|��Sr*)Zioprio_sort_keyrQrrr r-�r.cCs|��Sr*)�get_userrQrrr r-�r.cCs|jSr*)r5rQrrr r-�r.TcCs|j|jSr*)r6r7rQrrr r-�r.cCs|jSr*)r4rQrrr r-�r.cCs|jpt|jp|j�Sr*)r3rr5r6rQrrr r-�scCs|��Sr*)�get_cmdlinerQrrr r-�r.cCst||_||_d|_tj|jd|_|jjsp||_|��zt	�
�t	��t	�d�Wnt	j
k
rnYnXdS)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

CsRd}t��}|jjs.|�tj��tjtj	B�|jj
dksH||jj
k�rN|j��\}}|�
|dk|||jj�|jj
dk	r�|d7}||jj
kr��qNn|dkr�d}z|�|jjd�}WnBtjk
r�}z"|jr�|jdtjkr�g}n�W5d}~XYnX|D]"\}}|tjtjB@r�t�d�q�|jj�s4|��|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�currentZeventsrD�fdZevent�keyrrr �run�s>
��

zIOTopUI.runcCs|j|_dSr*)rZrerrr �reverse_sorting�szIOTopUI.reverse_sortingcCs2|j}|�|�|_||jkr.tj|jd|_dS�Nr)rX�get_sorting_keyrOrYrZ)ra�deltaZorig_sorting_keyrrr �adjust_sorting_key�s
zIOTopUI.adjust_sorting_keycCs0|j}||7}td|�}tttj�d|�}|S)Nrr)rXr8r(r>rOrY)rar}Znew_sorting_keyrrr r|�s

zIOTopUI.get_sorting_keyNcCs�|j�ddtd�tjB|j�|j�dd|tj�|j��t�	�t�
d�|j�dt|��}t�
d�t�
�|dkr~|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_strcCs8|�|||�}z
t|�WStk
r2t��YnXdSr*)r�r�
ValueErrorrKr�rrr �
prompt_int�s

zIOTopUI.prompt_intcCs@z|�d�WStk
r&t��Yntk
r:�YnXdS)NzPID to ionice: )r�rKrLrFrerrr �
prompt_pid�s
zIOTopUI.prompt_pidcCs@z|�d�WStk
r&t��Yntk
r:�YnXdS)NzTID to ionice: )r�rKrMrFrerrr �
prompt_tids
zIOTopUI.prompt_tidcCsdz.|dk	r|�d||d�}n|�ddd�}Wntk
rHt��YnX|dksZ|dkr`t��|S)Nz'I/O priority data (0-7, currently %s): FzI/O priority data (0-7): r�)r�rKrN)ra�ioprio_datar�rrr �prompt_data
s��zIOTopUI.prompt_datacCshz|�|�}Wntk
r&d}YnXt|�d}|j�ddtd�tjB|j�|j�	dd|tj
�t|�}t|�D]D\}}d|}	||kr�tj}
ntj}
|j�	d||	|
�|t|	�7}qv|j�
�}|tjtd�fkr�|dkr�|d8}q4q�|tjtd�fk�r||k�r|d7}q4q�|tjtd�td	�fk�r8||S|d
tjtjtjtd�td�fkr�t��q�q4dS)
N���rrrz %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_sets@

��zIOTopUI.prompt_setcCs8d}dddg}dddg}|dkr$d}|�||||�}|S)	NzI/O priority class: z	Real-timezBest-effortZIdleZrtZbe�idler)r�)ra�ioprio_classr�Zclasses_promptZclasses_retr�rrr �prompt_class;s

�zIOTopUI.prompt_class�Error!cCsN|j�ddtd�tjB|j�|j�ddd|tj�|j��t	�
d�dS)Nrrrz  %s  )r\r�r�r^r�rdr�r�r�r1�sleep)rar`rrr �prompt_errorEs
zIOTopUI.prompt_errorcCs,|j�ddtd�tjB|j�|j��dS)Nrrr)r\r�r�r^r�rdr�rerrr �prompt_clearKszIOTopUI.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_accumulatedPsz.IOTopUI.handle_key.<locals>.toggle_accumulatedcs�jjdN_dSr�)r#�onlyrrerr �toggle_only_ioSsz*IOTopUI.handle_key.<locals>.toggle_only_iocs(�jjdN_�j���j��dSr�)r#�	processesrW�clearrmrrerr �toggle_processesVs
z,IOTopUI.handle_key.<locals>.toggle_processesc
s`z��jjr ���}�j�|�}n���}t|�jj�}|��}t	�
|�\}}��|�}|dkrdd}n
��|�}|�
||��j���j��Wn�tk
r�}z��d|j�W5d}~XYn�tk
r���d�Yn~tk
r���d�Ynbtk
�r��d�YnDtk
�r6��d�Yn&tk
�rR���Yn
X���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_iopriorZto_class_and_datar�r�Z
set_ioprior�rmrr��errrLrMrNrKrFr�)rPZ	exec_unit�tidZioprio_valuer�r�rDrerr �ionice[s>��


 z"IOTopUI.handle_key.<locals>.ionicer�cSs
t�d�S�Nr�rirrrrrr r-�r.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��r~rrerr r-�r.cs
��d�Sr{r�rrerr r-�r.cs��ttj��Sr*�r~r>rOrYrrerr r-�r.cs��ttj��Sr*r�rrerr r-�r.cSsdSr*rrrrr r-�r.)r�r^r�r�ZKEY_HOMEZKEY_END�get)rarxr�r�r�r�Zkey_bindings�actionrrer rtOsN$





�#zIOTopUI.handle_keycs��fdd�}�fdd�}tt|�jj����}tj�jd��jj	rPdd��ndd��|j
��fd	d��jd
�tt||��S)Nc
s�t�j|�jj�}|\}}}}tjr2d||f}nd}dt}|d|j|��|�	�dd�|||f}|�
�}	�jjs؈jt
|�}
d|
kr�t
|	�kr�nn6|
dd}|
|d}|	d|�d|	|d�}	||	7}�jjs�|d�j�}|S)	Nz%7s %7s z ?unavailable?  z%%%ddz %4s %-8s %11s %11s %s�rr�~)r<r#rWr&r�has_blkio_delay_total�
MAX_PID_WIDTHrPr�rTrUr[rdr>)
rRr9r:r;r5r6Zdelay_statsZ
pid_format�lineZcmdlineZremaining_lengthZlen1Zoffset2rerr �format�s2�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�reverse)
�list�filterrWr��valuesrOrYrXr#r/�sortrZ�map)rar�r�r�r)rxrar�r �get_data�s
�
�zIOTopUI.get_datac s�dt�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}���}�jjr�dg|}t�d���fdd�|D�}�fdd�|D�}�jj	�r^�jj
dk�r<|D]}	t|	��q�jj
t|�k�r<td�
|��|D]}
t|
��q@tj���n��j��tj�rvd}nd}g}g}
�jj�r��d�}��d�}tddddd�jj�r�dnd fd!�jj�r�d"nd#fd$�jj�r�d%nd&fd'd(�j�r�d)nd*fd+||��fd,||��fd-|d��fd.|d��fg
�}d}|��D]�\}}|�r|d/|d0|g}d|d1k�rndntjddg}nd/|d2g}dddg}|�r�|�r�td�
||�d�
|���j k�r�|�!|�|
�!|�|d7}n |||7<|
||7<�qDt|��tt"|���tt"|��}t|�}�j#��||}|d3k�rRg}d�|d4k�rdg}d�|d5k�rvd}d}|d6k�r�g}g}
d}�j#��||}t$t|�|�}t%|�D]$\�}	�j�&�d|	d�j ���q�|�r�j�'�dt(d�tj)B�j �d}�j }t*t|��D]��tj)}|�}��j+k�rB|dd�}��j+k�rn|tj,O}|�j�rhd7�pjd87}|d|�}|t|�8}|�r��j�&�|||�|t|�7}�qt*|�D]p�zP����fd9d:�}z||��Wn(t-k
�r||��.d;��YnXWntj/k
�r"YnX�q�t*|�D]�}�j#|||}�j�'|dt(d�tj)B�j �d}t*t||��D]B��j�0||||�tj)|
|�B�|t||��7}�qx�q0|�r�j�0�j#dd|tj,��j�1�dS)<Nz.Total DISK READ:   %s | Total DISK WRITE:   %sr�rz.Current DISK READ: %s | Current DISK WRITE: %s�r�PIDZTIDz  PRIOz  USERz     DISK READz  DISK WRITEz  SWAPINz      IOz    COMMANDz    TIMEz	%H:%M:%S csg|]}�|�qSrr)�.0r���current_timerr �
<listcomp>�sz+IOTopUI.refresh_display.<locals>.<listcomp>csg|]}�|�qSrr)r�rSr�rr r��srrzNCONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %r�)�keysr)�anyr�)r��quit)r�r�r��allZactiverRZthreadsZprocsr�Z	bandwidthZaccum)r�rr�ZascZdesc�left�right�home�endz  z: r��:r=rVr�r��>�<cs�j����d|�dSr�)r\r�)r�)r��len_summary�
len_titlesrarr �
print_lineBsz+IOTopUI.refresh_display.<locals>.print_linezutf-8)2r'r#�rjustr8r�r�r�r1�strftimer[�quietrCr�joinri�stdout�flushr\Zeraserr��helpr|rr�r/rZrA�itemsr^ZA_UNDERLINEr>rd�append�boolrcr(r�r�r�r�r��rangerXr��UnicodeEncodeError�encoder`r�r�) raZ
first_timerurvr&ZsummaryrPZtitles�linesrSr�Z
status_msgZ
help_linesZ
help_attrs�prev�nextr�Z	help_linerxZ	help_itemZ	help_attrZlen_status_msgZlen_helpZ	max_linesZ	num_lines�posZremaining_colsr��titler�Zlnr�r)r�r�r�r�rar rn�s���	

�






�

0








(�zIOTopUI.refresh_display)NT)NT)N)r�)rHrIrJrYrbr]ryrzr~r|r�r�r�r�r�r�r�r�r�rtr�rnrrrr rO�s:





�
�!	


!


U'rOcCsf|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_windowYs
rc
Cs�z$|jrtd|�WSt�t|�WSWnXtk
r|}z:|jtjkrjt|tj	d�tdtj	d�t�
d�n�W5d}~XYnXdS)N)�filea�
The Linux kernel interfaces that iotop relies on now require root privileges
or the NET_ADMIN capability. This change occurred 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.r)r[rr^�wrapper�OSErrorrqZEPERMrCri�stderrrr)r#rDrrr �	run_iotopgs�rcCs�d}z:ddl}ddl}td�|�dt�t�|�|�|�}WnXtk
r�ddl}ddl	}|j
|dd�}td�|�|�|��|j
�|�}YnX|��|�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 �_profile�s(


raF%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�Wntjk
r0td�YnXtjtdtd�}|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�|j	dEdFdGdHdId�|��\�}|�r�|�dJdK�
|��t���j�p�g�_�j�p��j�p��j�_�fdLdM���j�r�fdNdO�}t|�n��dS)PNrz8unable to set locale, falling back to the default localeziotop )Zusage�versionz-oz--only�
store_truer�Fz1only show processes or threads actually doing I/O)r��destr�r�z-bz--batchr[znon-interactive mode)r�rr�z-nz--iterrrlZNUMz-number of iterations before ending [infinite])�typer�metavarr�z-dz--delayrroz#delay between iterations [1 second]ZSECr)rrr�rr�z-pz--pid�pidsr�z"processes/threads to monitor [all]r�)rrr�r�rz-uz--user�strZuserszusers 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�profilez	--no-helpZstore_falser�Tzsuppress listing of shortcutszUnexpected arguments: rcst��Sr*)rrr,rr r-�r.zmain.<locals>.<lambda>cs$z
��Wntk
rYnXdSr*)rBr)�	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�s�
������
�
�
���
��
r()3Z
__future__rr^rqr rr$rrfr�rir1�hasattrrr�RuntimeError�collectionsrZ
iotop.datarrrrr	Z
iotop.versionr
ZiotoprZiotop.iopriorrr!r%r'r<rEr�rBrFrKrLrMrN�objectrOrrr�argvr%r(rrrr �<module>sZ

L
�