403Webshell
Server IP : 39.108.156.168  /  Your IP : 216.73.216.104
Web Server : nginx/1.24.0
System : Linux e2.ksyuki.com 6.11.0-25-generic #25~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 15 17:20:50 UTC 2 x86_64
User : root ( 0)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/dstat/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/dstat/__pycache__/dstat.cpython-312.pyc
�

�n`�}�	��ddlmZmZmZmZeZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZdZddiaej.dkrej0d�ej2j5d�ej2j7ej2j9ej:d��d	zd
dgZGd�d
�ZGd�d�Z Gd�de �Z!Gd�de �Z"Gd�de"�Z#Gd�de"�Z$Gd�de �Z%Gd�de �Z&Gd�de �Z'Gd�de �Z(Gd �d!e �Z)Gd"�d#e �Z*Gd$�d%e �Z+Gd&�d'e �Z,Gd(�d)e �Z-Gd*�d+e �Z.Gd,�d-e �Z/Gd.�d/e �Z0Gd0�d1e �Z1Gd2�d3e1�Z2Gd4�d5e �Z3Gd6�d7e �Z4Gd8�d9e �Z5Gd:�d;e �Z6Gd<�d=e �Z7Gd>�d?e �Z8Gd@�dAe �Z9GdB�dCe �Z:GdD�dEe �Z;GdF�dGe �Z<GdH�dIe �Z=GdJ�dKe �Z>GdL�dMe �Z?GdN�dOe �Z@GdP�dQe@�ZAGdR�dSe �ZBidTdU�dVdW�dXdY�dZd[�d\d]�d^d_�d`da�dbdc�ddde�dfdg�dhdi�djdk�dldm�dndo�dpdq�drds�dtdu�dvdwdxdydzd{d|d}��ZCid~d�d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��dd�aDd�d�d�d�d�d�d�d�d��ZEd��ZFd��ZGd��ZHd��ZId��ZJd��ZKd�d��ZLd�d��ZMd�d��ZNd��ZOd��ZPd�d��ZQd��ZRd�d��ZSd��ZTd�d��ZUd��ZVd��ZWd��ZXd��ZYd��ZZd��Z[d��Z\d�d��Z]d��Z^d��Z_d��Z`d„ZadÄZbdĄZcdńZddƄZedDŽZfdȄZgdɄZhdʄZid˄Zjd̄Zkd̈́Zld΄ZdτZmdЄZneod�k(r�	eb�eej�d�d�j��ej:d�dz�areF�at�j�roddlsZsej2j�t�j��r ej�t�j��esj�d�t�j��nem�ed�yed�ard�a|y#ew$r5Zxt�j�rej�j�dիYdZx[x�IdZx[xwwxYw)��)�absolute_import�division�
generators�print_functionNz0.8.0�default�)�r	z#error: Python 2.2 or later requiredz	~/.dstat/z	/plugins/z/usr/share/dstat/z/usr/local/share/dstat/c�$�eZdZd�Zd�Zd�Zd�Zy)�Optionsc��||_d|_d|_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_d|_d|_d|_t)�}g|_t,j.j1�sd|_d|_d|_ddd	d
�|_	t5j4|dgd�|z�\}}D�]�\}}|dvr|j*j=d��'|dvr|j?d�|_�B|dvr|j*j=d��b|dvr|j?d�|_�}|dvr|j*j=d���|dvr|j*j=d���|dvr|j*j=d���|dvr|j?d�|_��|dvr|j*j=d���|dvr|j*j=d���:|d vrft9d!|�d"d#jA|j?d���d$�t,jB�%�|xj*|j?d�z
c_���|d&vr|j*j=d'����|d(vr|j?d�|_���|d)vr|j*j=d*���|d+vr|j*j=d,���#|d-vr|j*j=d.���D|d/vr|j?d�|_
��`|d0vr|j*j=d1����|d2vr|j*j=d3����|d4vr|j*j=d5����|d6vr|xj*gd7�z
c_���|d8vr|xj*gd9�z
c_���|d:vr	d|_��
|d;vr`tEijG|�jI��}|jK�|jMd<�|xj*|z
c_��n|d=vr	d|_��{|d>vr	d|_���|d?vrd|_d|_���|d@vr|j
dz|_���|dAvr	d|_	���|dBvr	d|_
���|dCvr!tO�t-j:d����|dDvr	d|_��|dEvr	d|_��|dFvr	d|_��|dGvr	||_��)|dHvr	||_��6|dIvr	dJ|_��C|dKvr7|jQ�|jS�t-j:d���~|dLvr'|jU�t-j:d����|jWdM�r |j*j=|dNd����t9dO|z�t-j:d����|jr,|jr t9dP�t-j:d�|j*st9dQ�gd7�|_	tY|�dkDrt[|d�|_tY|�dkDrt[|d�|_|jdkr t9dS�t-j:d�|j
rt9dT|j*z�yy#t4j6$r.}t9d
|z�t-j:d�Yd}~��.d}~wwxYw#t9dR�t-j:d�Y��xYw)UNF���r�Tr)�sdazhd[a-d])zsd[b-k]zsd[v-z]zsda[a-e])zsd[l-u]zsda[f-o])�local�lores�hiresz acdfghilmno:prstTvyC:D:I:M:N:S:V)�allzall-plugins�bits�bwzblack-on-white�color�debug�
filesystem�float�full�help�integer�list�mods�modules�nocolor�	noheaders�noupdatezoutput=zpidfile=�profile�version�vmstatz5dstat: %s, try dstat -h for a list of all the options)z-c�cpu)z-C�,)z-d�disk)z-D)z--filesystem�fs)z-g�page)z-i�int)z-I)z-l�load)z-m�mem)z-Mz--modsz	--moduleszWARNING: Option z is deprecated, please use --z --z instead��file)z-n�net)z-N)z-p�proc)z-r�io)z-s�swap)z-S)z-t�time)z-T�epoch)z-y�sys)z-az--all)r&r(r0r*r6)z-vz--vmstat)r1r-r*r(r6r&)z-fz--full)z
--all-plugins�ntp)z--bits)z--bwz--black-on-whitez--blackonwhite)z--color)z--debug)z--float)z	--integer)z--list)z	--nocolor)z--noheaders)z
--noupdate)z-oz--output)z	--pidfile)z	--profilezdstat_profile.log)z-hz--help)z-Vz	--versionz--r	zNdstat: option %s unknown to getopt, try dstat -h for a list of all the optionszPdstat: option --float and --integer are mutual exclusive, you can only force onez6You did not select any stats, using -cdngy by default.z>dstat: incorrect argument, try dstat -h for the correct syntaxz2dstat: delay must be an integer, greater than zerozPlugins: %s).�argsr�blackonwhite�count�cpulistr�delay�disklistrrr�intlist�netlist�swaplistr�update�header�output�pidfiler#�listplugins�pluginsr6�stdout�isatty�diskset�getopt�error�print�exit�append�split�join�stderrr�fromkeys�keys�sort�remove�showplugins�usagerr$�
startswith�lenr+)�selfr8�
allplugins�opts�exc�opt�argrFs        �/usr/share/dstat/dstat.py�__init__zOptions.__init__3s1����	���	�!�����
������
���
���
���	���
������������
���
����������������!�]�
�����z�z� � �"��D�J��D�K��D�K�(�7�,�
���	����t�-O�H�KU�U�V�J�D�$��a	�H�C���f�}����#�#�E�*����"�y�y��~���������#�#�F�+���� #�	�	�#���
��(�(����#�#�D�)�������#�#�F�+�������#�#�E�*����"�y�y��~���������#�#�F�+�������#�#�E�*��5�5��UX�Z_�Zd�Zd�eh�en�en�or�es�Zt�u�|�}G�}G�H�����	�	�#��.��������#�#�E�*����"�y�y��~���������#�#�F�+�������#�#�D�)�������#�#�F�+���� #�	�	�#���
�������#�#�F�+�������#�#�G�,�������#�#�E�*���'���� G�G���*�*���� O�O���(�(� ��	��)�)��r�{�{�:�6�;�;�=�>���������u�%�����'���
�"� ��	��F�F�$(��!���#�!��
�"�����#�!�Z�Z�!�^��
���#�!��
��
�%�#����
�"��
�������
�%�"��
���'�#�����&�#����*�*�!����
�%�"����
�%�2����(�(��
�
���	�	��������+�+��������������%����#�#�C���G�,��f�il�l�m������Ca	�F�:�:�$�,�,��d�e��H�H�Q�K��|�|��J�K�B�D�L�	��4�y�1�}�3�t�A�w�<�d�j��4�y�1�}�3�t�A�w�<�d�j�
�:�:��?��F�G��H�H�Q�K��:�:��-�$�,�,�.�/���u�|�|�	��I�C�O�P��H�H�Q�K�K��	��d	��R�S��H�H�Q�K�s%�[.�A\2�.\/�#\*�*\/�2"]c���tdtz�td�td�t�tdtj�dtj
���tdtj�dz�tdtjz�t�d	}t�sd
}tdtjd��d
|�d��t�\}}td||fz�t�tdt�z�tdtj�z�tdtjd�z�t�|at!�y)NzDstat %sz&Written by Dag Wieers <dag@wieers.com>z2Homepage at http://dag.wieers.com/home-made/dstat/z	Platform �/z	Kernel %sr	z	Python %srzno zTerminal type: �TERMz (zcolor support)z#Terminal size: %d lines, %d columnszProcessors: %dzPagesize: %dzClock ticks per secs: %d�
SC_CLK_TCK)rL�VERSION�os�namer6�platform�unamer$�gettermcolor�getenv�gettermsize�getcpunr�resource�getpagesize�sysconf�oprV)rZr�rows�colss    r`r$zOptions.version�s���
�j�7�"�#�
�6�7�
�B�C�
��
�"�'�'�3�<�<�8�9�
�k�B�H�H�J�q�M�)�*�
�k�C�K�K�'�(�
�����~��E�
�r�y�y��7H�%�P�Q� �]�
��d�
�3�t�T�l�B�C�
��
����+�,�
�n�x�3�3�5�5�6�
�(�2�:�:�l�+C�C�D�
�����
�c��td�y)Nz/Usage: dstat [-afv] [options..] [delay [count]]�rL�rZs r`rWz
Options.usage�s��
�?�@ruc��td�y)Na
Versatile tool for generating system resource statistics)

Dstat options:
  -c, --cpu                enable cpu stats
     -C 0,3,total             include cpu0, cpu3 and total
  -d, --disk               enable disk stats
     -D total,hda             include hda and total
  -g, --page               enable page stats
  -i, --int                enable interrupt stats
     -I 5,eth2                include int5 and interrupt used by eth2
  -l, --load               enable load stats
  -m, --mem                enable memory stats
  -n, --net                enable network stats
     -N eth1,total            include eth1 and total
  -p, --proc               enable process stats
  -r, --io                 enable io stats (I/O requests completed)
  -s, --swap               enable swap stats
     -S swap1,total           include swap1 and total
  -t, --time               enable time/date output
  -T, --epoch              enable time counter (seconds since epoch)
  -y, --sys                enable system stats

  --aio                    enable aio stats
  --fs, --filesystem       enable fs stats
  --ipc                    enable ipc stats
  --lock                   enable lock stats
  --raw                    enable raw stats
  --socket                 enable socket stats
  --tcp                    enable tcp stats
  --udp                    enable udp stats
  --unix                   enable unix stats
  --vm                     enable vm stats
  --vm-adv                 enable advanced vm stats
  --zones                  enable zoneinfo stats

  --list                   list all available plugins
  --<plugin-name>          enable external plugin by name (see --list)

  -a, --all                equals -cdngy (default)
  -f, --full               automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat             equals -pmgdsc -D total

  --bits                   force bits for values expressed in bytes
  --float                  force float values on screen
  --integer                force integer values on screen

  --bw, --black-on-white   change colors for white background terminal
  --color                  force colors
  --nocolor                disable colors
  --noheaders              disable repetitive headers
  --noupdate               disable intermediate updates
  --output file            write CSV output to file
  --profile                show profiling statistics when exiting dstat

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
rwrxs r`rzOptions.help�s��
�8�8	ruN)�__name__�
__module__�__qualname__rar$rWr�rur`rr2s��j0�X�4A�9rurc��eZdZdZdZdZdZdZdZdZ	dZ
dZdZd�Z
d�Zd	�Zdd
�Zdd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�dstatN�fr}��rc�&�t|j�r|j�|_t|j�r|j�|_|jstd��t|j�r|j	�|_t|j
�r|j�|_|j
s|j|_i|_i|_i|_|jrW|jdgzD]C}|j|j|<|j|j|<i|j|<�Ey|jdkr?|jD]/}dx|j|<x|j|<|j|<�1y|jdgzD]�}tt|j��|j|<tt|j��|j|<tt|j��|j|<tt|j��D]8}dx|j||<x|j||<|j||<�:��y)NzNo counter objects to monitor�totalr)
�callable�discover�vars�	Exceptionrh�nick�val�set1�set2�structrtr�range)rZrh�is   r`�preparez
dstat.prepareGs����D�M�M�"� �M�M�O�D�M��D�I�I���	�	��D�I��y�y��;�<�<��D�I�I���	�	��D�I��D�I�I���	�	��D�I��y�y��	�	�D�I����2�t�y�2�t�y��;�;��	�	�g�L�0�
%��!%��������"&�+�+��	�	�$��"$��	�	�$��
%��Y�Y�!�^��	�	�
G��EF�F������F����4��4�9�9�T�?�
G��	�	�g�L�0�
T��!%�e�D�I�I�&6�!7������"&�u�T�Y�Y�'7�"8��	�	�$��"&�u�T�Y�Y�'7�"8��	�	�$���e�D�I�I�.�/�T�A�RS�S�D�H�H�T�N�1�%�S��	�	�$���(:�T�Y�Y�t�_�Q�=O�T�	
Truc��g|_g|_|D]F}	t|�}|r6|jj|�|jj|��H|jst	dz��y#Y�hxYw)zOpen stat file descriptorzCannot open file %sN)r/�fd�dopenrNr�)rZ�	filenames�filenamer�s    r`�openz
dstat.opengs|����	����!�	�H�
��8�_����I�I�$�$�X�.��G�G�N�N�2�&��	��w�w��1�H�<�=�=���
��s�AA5�5A9c#�K�|jD],}|jd�|j�D]}|����.y�w)z%Return lines from any file descriptorrN)r��seek�	readlines)rZr��lines   r`r�zdstat.readlinesvs>�����'�'�	�B��G�G�A�J�����
���z�
�	�s�=?c��|jD]3}|jd�|j�j|�cSy�Nr)r�r��readrO)rZ�sepr�s   r`�	splitlinezdstat.splitline�s5���'�'�	(�B��G�G�A�J��7�7�9�?�?�3�'�'�	(ruc#�:K�|jD]�}|jd�|j�D]b}|r&|r$|j||�j	|����+|r#|j|d�j	����P|j	|����d��y�w)z+Return split lines from any file descriptorr� N)r�r�r��replacerO)rZr�r�r�r�s     r`�
splitlineszdstat.splitlines�s������'�'�	*�B��G�G�A�J�����
*���s��,�,�w��4�:�:�3�?�?���,�,�w��4�:�:�<�<��*�*�S�/�)�

*�	*�s�BBc��|jr?t|j�|j�zt|j�zdz
St|j�|j�zt|j�zdz
S)zReturn complete stat widthr)rtrYr��colwidthr�rxs r`�	statwidthzdstat.statwidth�s_���9�9��t�y�y�>�D�M�M�O�3�c�$�)�)�n�D�q�H�H��t�y�y�>�D�M�M�O�3�c�$�)�)�n�D�q�H�Hruc���t|jtj�r|jSt|j�|jzt|j�zdz
S)zReturn column widthr)�
isinstancerh�six�string_types�widthrYr�rxs r`r�zdstat.colwidth�sI���d�i�i��!1�!1�2��:�:���t�y�y�>�D�J�J�.��T�Y�Y��?�!�C�Cruc�P�td}t|jtj�rK|j�}||jd|j
|�jdd�ztdzSt|j�D]�\}}|j�}||d|j
|�jdd�z}|dzt|j�k7s�Ytjr!|tdztdztdz}��|td	z}��|S)
N�titlerr��-rr�frame�dash�space)�themer�rhr�r�r��centerr��	enumerater�rYr�rrr�char)rZ�retr�r�rhs     r`r�zdstat.title�s���G�n���d�i�i��!1�!1�2��N�N�$�E�����1�U�+�2�2�5�9�A�A�#�s�K�K�e�T]�N^�^�^� ����+�	.�G�A�t��M�M�O�E���Q�u�
�,�,�U�3�;�;�C��E�E�C��1�u��D�I�I��&��8�8���g��.��f��=��g��N�C���W�
�-�C�	.��
ruc��d}t|jtj�r�t	|j
�D]l\}}|tdz|d|jj|j�ztdz}|dzt|j
�k7s�a|tdz}�n|St	|j�D]�\}}t	|j
�D]l\}}|tdz|d|jj|j�ztdz}|dzt|j
�k7s�a|tdz}�n|dzt|j�k7s��|tdztdz}��|S)	Nr�subtitlerrrr�r��colon)r�rhr�r�r�r�r�r�r�rYr��rZr�r�r�rh�js      r`r�zdstat.subtitle�se�����d�i�i��!1�!1�2�$�T�Y�Y�/�
F���4��E�*�-�-��Q�t�z�z�0B�0I�0I�$�*�*�0U�U�X]�^g�Xh�h���q�5�C��	�	�N�*�#��W�
�2E�C�
F��J�$�T�Y�Y�/�
W���4�(����3�J�G�A�t���j� 1�1�D��4�:�:�4F�4M�4M�d�j�j�4Y�Y�\a�bk�\l�l�C��1�u��D�I�I��.�c�D��M�6I��J��q�5�C��	�	�N�*�#��g��2F��g��2V�C�	
W�
�Jruc��t|jtj�r5d|jzdztdt|j�dz
zzSd}t|j�D][\}}|dz|zdztdt|j�dz
zz}|dzt|j�k7s�P|tdz}�]|S)N�"r�rr)r�rhr�r�r�rYr�r�)rZr�r�rhs    r`�csvtitlezdstat.csvtitle�s����d�i�i��!1�!1�2�����?�S�(�4��;�#�d�i�i�.�1�:L�+M�M�M��C�$�T�Y�Y�/�
D���4��C�i�$�&��,�t�E�{�c�$�)�)�n�q�>P�/Q�Q���q�5�C��	�	�N�*�#��U��2C�C�
D��Jruc��d}t|jtj�rRt	|j
�D]8\}}|dz|zdz}|dzt
|j
�k7s�-|tdz}�:|St
|j�dk(r�t	|j�D]}\}}t	|j
�D]8\}}|dz|zdz}|dzt
|j
�k7s�-|tdz}�:|dzt
|j�k7s�r|tdz}�|St	|j�D]�\}}t	|j
�D]>\}}|dz|zdz|zdz}|dzt
|j
�k7s�3|tdz}�@|dzt
|j�k7s�x|tdz}��|S)Nrr�rr��:)r�rhr�r�r�r�rYr�r�s      r`�csvsubtitlezdstat.csvsubtitle�s������d�i�i��!1�!1�2�$�T�Y�Y�/�
D���4��C�i�$�&��,���q�5�C��	�	�N�*�#��U��2C�C�
D��
�����^�q�
 �$�T�Y�Y�/�
D���4�(����3�H�G�A�t���)�d�*�S�0�C��1�u��D�I�I��.�c�D��K�6G��H��q�5�C��	�	�N�*�#��U��2C�C�	
D��
�%�T�Y�Y�/�
D���4�(����3�H�G�A�t���)�d�*�S�0�4�7�#�=�C��1�u��D�I�I��.�c�D��K�6G��H��q�5�C��	�	�N�*�#��U��2C�C�	
D�
�
ruc��|jstd��|jstd��|j�rytd��)zCheck if stat is applicablez$No objects found, no stats availablez)No objects discovered, no stats availableTzUnknown problem, please report)r�r�r�r�rxs r`�checkzdstat.check�sB���y�y��B�C�C��}�}��G�H�H��=�=�?���8�9�9ruc��y)NTr})rZ�objlists  r`r�zdstat.discover�s��ruc���d}t|d�r6t|j|j|j|j
�St
|j�D�]�\}}|t|j�kr|j|}n|j}|t|j�kr|j|}n|j
}t|j|tjj�r�t|j|t j"�s_|t%|j|||j|�z}t&dt(dz}|dzt|j�k7s��||z}��&|t|j*�k\r|S|t|j|||j|�z}t(d}|dzt|j*�k7s���||z}���|S)zDisplay stat resultsrrCr�r�rr�)�hasattr�cprintrC�typer��scaler�r�rY�types�scalesr�r��collections�abc�Sequencer�r��
cprintlistr�r�r�)rZr�r�rh�ctyper�r�s       r`�showz
dstat.show�s������4��"��$�+�+�t�y�y�$�*�*�d�j�j�I�I� ����+�	&�G�A�t��3�t�z�z�?�"��
�
�1�
���	�	���3�t�{�{�#�#����A����
�
���$�(�(�4�.�+�/�/�*B�*B�C�J�W[�W_�W_�`d�We�gj�gw�gw�Lx��j����$����
�
�E�R�R���G�n�t�G�}�4���q�5�C��	�	�N�*��#�:�D���D�I�I��&��
��	�f�T�X�X�d�^�U�D�J�J��N�N���7�m���q�5�C��	�	�N�*��#�:�D�)	&�*�ruc�l�|r||durtdtdzS||k7rtdtdzSy)Nr
r��pipe�gtr)r�r��rZ�totlist�vislists   r`�showendz
dstat.showendsA���t�7�2�;�.���>�D��L�0�0�
��
���>�D��J�.�.�ruc��d�}d}t|j�D�]&\}}t|j|tj
�s't|j|tj�rWt|j|�D];\}}|||�z}|dzt|j|�k7s�0|tdz}�=nRt|j|tj�r||j|z}n|||j|�z}|dzt|j�k7s��|tdz}��)|S)Nc�V�|t|�k7rd|zSdtt|��zS)Nz%.3fz%d)�roundr+)�vars r`�printcsvzdstat.showcsv.<locals>.printcsvs+���e�C�j� ���|�#��#�e�C�j�/�)�)rurrr�)
r�r�r�r�r��ListType�	TupleTyperYr��
StringType)rZr�r�r�rhr�r�s       r`�showcsvz
dstat.showcsvs��	*�
�� ����+�	*�G�A�t��$�(�(�4�.�%�.�.�9�Z����QU��X]�Xg�Xg�=h�'������7�2�F�A�s��(�3�-�/�D��1�u��D�H�H�T�N� 3�3�#�d�5�k�1��2��D�H�H�T�N�E�,<�,<�=��d�h�h�t�n�,���h�t�x�x��~�6�6���1�u��D�I�I��&��d�5�k�)��	*��ruc�L�|r||dur	tdS|r||dur	tdSy)Nr
r�r)r�r�s   r`�
showcsvendzdstat.showcsvend0s5���t�7�2�;�.���;��
��W�R�[�0���;��ru�N)NN)rzr{r|r�rhr�r�r�r�r�r�rtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r}rur`rr8s����D��D��D��D��E�
�E��E�
�F��D�
�F�
T�@
>��(�

*�*I�D�
�
���(
:���8��*rurc��eZdZd�Zd�Zy)�	dstat_aioc�l�d|_d|_d|_d|_d|_|jd�y)N�async)z#aio)�aio�dr�z/proc/sys/fs/aio-nr)rhr�r�r�r�r�rxs r`razdstat_aio.__init__8s2����	���	���	���	���
��	�	�'�(ruc��|j�D],}t|�dkr�t|d�|jd<�.y)Nrrr��r�rYr+r��rZ�ls  r`�extractzdstat_aio.extract@s:�����"�	(�A��1�v��z�8�!�!�A�$�i�D�H�H�U�O�	(ruN�rzr{r|rar�r}rur`r�r�7s��)�(rur�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�	dstat_cpuc�l�d|_d|_d|_d|_|j	d�d|_y)N)�usrr6�idl�wai�stl�p��"�
/proc/statr��r�r�r�r�r�rtrxs r`razdstat_cpu.__init__Fs1��9��	���	���
���
��	�	�,����	ruc���g}|j�D]3}t|�dks|ddddk7r�|j|ddd��5|j�|D]}|j|��|S)N�	rr�r&�r�rYrNrT�rZr�r�r��items     r`r�zdstat_cpu.discoverNsw�������"�	!�A��1�v��z�Q�q�T�!�A�Y�%�/���J�J�q��t�A�B�x� �	!�	���
��-�D�S�Z�Z��-�-��
ruc�X�g}tjrIdtjvr7g}d}|tkrM|jt	|��|dz}|tkr�)n#tjrtj}nd}|D]&}||j
dgzvs�|j|��(|S�Nrrr�r�r��rrr;�cpunrrN�strr��rZr��varlistr&rhs     r`r�zdstat_cpu.varsW�����
�:�:�%�2�:�:�-��G��C���+����s�3�x�(��A�g����+��Z�Z��j�j�G� �G��	!�D��t�}�}��y�0�0��
�
�4� �	!��
ruc��g}|jD]0}|dk(r|jd��|jd|zdz��2|S)Nr�ztotal cpu usager&z usage�r�rN�rZr�rhs   r`rhzdstat_cpu.nameisJ�����I�I�	4�D��w���
�
�,�-��
�
�5�4�<�(�2�3�		4�
�
ruc
���|j�D]�}t|�dkr�|jD]�}|dd|zk(s|ddk(s�|dk(s�t|d�t|d�zt|d�zt|d�zt|d	�t|d
�t|d�t|d�f|j|<����|jD]�}tt
|j��D]�}t|j|�t|j|�kDrkd
|j|||j||z
zt|j|�t|j|�z
z|j||<��d|j||<����ttjk(r&|jj|j�yy)Nr�rr&r�rr	��r��r���Y@�r�rYr�r+r�rr�rt�sumr�r��steprrr<rA�rZr�rhr�s    r`r�zdstat_cpu.extractrs������"�	D�A��1�v��z�8��	�	�
D���Q�4�5�4�<�'�Q�q�T�U�]�t�w��(+�A�a�D�	�C��!��I�(=��A�a�D�	�(I�C�PQ�RS�PT�I�(U�WZ�[\�]^�[_�W`�be�fg�hi�fj�bk�mp�qr�st�qu�mv�x{�|}�~�}A�yB�'D�D�I�I�d�O�
D�	D��I�I�	*�D��%��	�	�*�+�
*���t�y�y���'�#�d�i�i��o�*>�>�(-����4���1C�d�i�i�PT�o�VW�FX�1X�(Y�]`�ae�aj�aj�ko�ap�]q�tw�x|�yB�yB�CG�yH�uI�^I�)J�D�H�H�T�N�1�%�()�D�H�H�T�N�1�%�	
*�	*��2�8�8���I�I���T�Y�Y�'�ruN�rzr{r|rar�r�rhr�r}rur`r�r�Es�����$�(rur�c��eZdZd�Zd�Zy)�
dstat_cpu_usec��d|_d|_d|_d|_|j	d�d|_tjs5ttt��D�cgc]
}t|���c}|_yycc}w)Nz
per cpu usager�r�r�r�r)
rhr�r�r�r�rtrrr;rr�rrr�)rZ�xs  r`razdstat_cpu_use.__init__�s_��#��	���	���
���
��	�	�,����	��z�z�*.�u�U�|�*<�>�Q�#�a�&�>�D�I���>s�A;c��|j�D]�}t|�dkr�|jD]�}|dd|zk(s|ddk(s�|dk(s�t|d�t|d�zt|d�t|d�t|d	�t|d
�t|d�t|d�f|j|<����|jD]�}t|j|�t|j|�kDrkd
d
|j|d|j|dz
zt|j|�t|j|�z
zz
|j|<��d|j|<��ttjk(r&|jj|j�yy�Nr�rr&r�rr	r�rr�rrrr)r�rYr�r+r�rr�r�rrrr<rA�rZr�rhs   r`r�zdstat_cpu_use.extract�s������"�	B�A��1�v��z�8��	�	�
B���Q�4�5�4�<�'�Q�q�T�U�]�t�w��(+�A�a�D�	�C��!��I�(=�s�1�Q�4�y�#�a�PQ�d�)�UX�YZ�[\�Y]�U^�`c�de�fg�dh�`i�kn�op�qr�os�kt�vy�z{�|}�z~�v�'B�D�I�I�d�O�
B�	B��I�I�	#�D��4�9�9�T�?�#�c�$�)�)�D�/�&:�:�!&��$�)�)�D�/�!�2D�t�y�y�QU��WX�GY�2Y�)Z�^a�bf�bk�bk�lp�bq�^r�ux�y}�zC�zC�DH�zI�vJ�_J�*K�"K������!"������		#��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`rr�s��?�(rurc��eZdZd�Zd�Zy)�
dstat_cpu_advc�l�d|_d|_d|_d|_|j	d�d|_y)N)r�r6r�r��hiq�siqr�r�r�r�r�rr�rxs r`razdstat_cpu_adv.__init__�s1��G��	���	���
���
��	�	�,����	ruc���|j�D]�}t|�dkr�|jD]�}|dd|zk(s|ddk(s�|dk(s�t|d�t|d�zt|d�t|d�t|d	�t|d
�t|d�t|d�f|j|<����|jD]�}tt
|j��D]�}t|j|�t|j|�kDrkd
|j|||j||z
zt|j|�t|j|�z
z|j||<��d|j||<����ttjk(r&|jj|j�yyrrrs    r`r�zdstat_cpu_adv.extract�s������"�	B�A��1�v��z�8��	�	�
B���Q�4�5�4�<�'�Q�q�T�U�]�t�w��(+�A�a�D�	�C��!��I�(=�s�1�Q�4�y�#�a�PQ�d�)�UX�YZ�[\�Y]�U^�`c�de�fg�dh�`i�kn�op�qr�os�kt�vy�z{�|}�z~�v�'B�D�I�I�d�O�
B�	B��I�I�	*�D��%��	�	�*�+�
*���t�y�y���'�#�d�i�i��o�*>�>�(-����4���1C�d�i�i�PT�o�VW�FX�1X�(Y�]`�ae�aj�aj�ko�ap�]q�tw�x|�yB�yB�CG�yH�uI�^I�)J�D�H�H�T�N�1�%�()�D�H�H�T�N�1�%�	
*�	*��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`r"r"�s���(rur"c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�dstat_cpu24c�l�d|_d|_d|_d|_|j	d�d|_y)N)r�r6r�r�r�r�r�r�rxs r`razdstat_cpu24.__init__�s1��*��	���	���
���
��	�	�,����	ruc���g}|j�D]3}t|�dk7s|ddddk7r�|j|ddd��5|j�|D]}|j|��|S)Nr�rr�r&rrs     r`r�zdstat_cpu24.discover�sw�������"�	!�A��1�v��{�a��d�1�Q�i�5�0�(��J�J�q��t�A�B�x� �	!�	���
��-�D�S�Z�Z��-�-��
ruc�X�g}tjrIdtjvr7g}d}|tkrM|jt	|��|dz}|tkr�)n#tjrtj}nd}|D]&}||j
dgzvs�|j|��(|Srrr	s     r`r�zdstat_cpu24.vars�rruc��g}|jD]-}|dk(r|jd��|jd|z��/|S)Nr�z	cpu usager&r
rs   r`rhzdstat_cpu24.name�sD�����I�I�	)�D��w���
�
�;�'��
�
�5�4�<�(�		)�
�
ruc���|j�D]r}|jD]a}|dd|zk(s|ddk(s�|dk(s�t|d�t|d�zt|d�t|d�f|j|<�c�t|jD]�}t	t|j��D]l}d|j|||j||z
zt|j|�t|j|�z
z|j||<�n��ttjk(r&|jj|j�yy)	Nrr&r�rr	r�rr)r�r�r+r�rr�rtr�rr�rrrr<rArs    r`r�zdstat_cpu24.extract�sb�����"�	V�A��	�	�
V���Q�4�5�4�<�'�Q�q�T�U�]�t�w��(+�A�a�D�	�C��!��I�(=�s�1�Q�4�y�#�a�PQ�d�)�&U�D�I�I�d�O�
V�	V�
�I�I�	F�D��%��	�	�*�+�
F��$)�T�Y�Y�t�_�Q�-?�$�)�)�D�/�RS�BT�-T�$U�Y\�]a�]f�]f�gk�]l�Ym�ps�tx�t}�t}�C�uD�qE�ZE�%F������q�!�
F�	F��2�8�8���I�I���T�Y�Y�'�ruNrr}rur`r(r(�s�����$�(rur(c�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�
dstat_diskc��d|_d|_tjd�|_|jd�d|_y)N�r��writ�b�I^([hsv]d[a-z]+\d+|cciss/c\d+d\d+p\d+|dm-\d+|md\d+|mmcblk\d+p\d0|VxVM\d+)$�/proc/diskstatsr	)r�r��re�compile�
diskfilterr�rtrxs r`razdstat_disk.__init__�s5��$��	���	��*�*�%p�q����	�	�#�$���	ruc���g}|j�D]4}t|�dkr�|dddgdzk(r�|d}|j|��6|D]}|j|��|std��|S�N�
r��0�r	�*No suitable block devices found to monitor�r�rYrNr��rZr�r�r�rhrs      r`r�zdstat_disk.discover���������"�	�A��1�v��{�H����u�����#�X��Q�4�D��J�J�t��		�
�-�D�S�Z�Z��-�-���H�I�I��
ruc���|dddk(r�tjj|�r�tjj|�r�tj|�}|ddk7r\tjjtjj
|�|�}tjj|�}td|�d|���|}|ddStd|z�y|S�	z%Strip /dev/ and convert symbolic linkNr��/dev/rrczdstat: symlink z -> zdstat: %s does not exist�	rg�path�exists�islink�readlinkrP�dirname�normpathrL�rZr(�targets   r`�basenamezdstat_disk.basename	������8�w���w�w�~�~�d�#��7�7�>�>�$�'��[�[��.�F��a�y�C�'�!#�����b�g�g�o�o�d�.C�V�!L��!#���!1�!1�&�!9���t�V�D�E�!�D��A�B�x���0�4�7�8��Kruc���g}tjr.tt|jtj��}nptj
sd}n]g}|jD]<}|jj|�r�|t�vr�,|j|��>|j�|D]8}||jdgzvs|tjvs�(|j|��:|S�Nrr�)
rrr=r�maprNrr�r8�match�blockdevicesrNrTrI�rZr�r
rhs    r`r�zdstat_disk.varss�����
�;�;��3�t�}�}�b�k�k�:�;�G���� �G��G��
�
�
%���?�?�(�(��.���|�~�-�x����t�$�
%�

�L�L�N��	!�D��t�}�}��y�0�0�D�B�J�J�4F��
�
�4� �	!��
ruc�X�|jD�cgc]}dt|�z��c}Scc}w�Nzdsk/�r��	sysfs_dev�rZrhs  r`rhzdstat_disk.name1�#��37�9�9�=�4��y���&�=�=��=��'c	���|jD]}d|j|<�|j�D�]�}t|�dkr�|ddk(r	|ddk(r�$|d}|dddgdzk(r�6|jj|�sO|jd	d
t
|d�z|jd	dt
|d�zf|jd	<||jvrT|d	k7rO|j|d
t
|d�z|j|dt
|d�zf|j|<|jD]�}|tjvs�tj|D]h}tj||�s�|j|d
t
|d�z|j|dt
|d�zf|j|<�j�����|jD]@}ttd�|j||j|��|j|<�Bttjk(r&|jj!|j�yy)
N�rrr;r�r<r�r	r�r=r�rrc� �||z
dztzS�Ng�@��elapsed�r�ys  r`�<lambda>z$dstat_disk.extract.<locals>.<lambda>F���A��E�U�?�W�3L�ru�r�r�r�rYr8rSr+rrrI�fnmatchrrRr�r�rr<rA�rZrhr�rIr(s     r`r�zdstat_disk.extract4sG���I�I�7�D��t�y�y���7����"�
	z�A��1�v��{�H���t�s�{�q��t�s�{�H��Q�4�D����u�����#�X��?�?�(�(��.�'+�y�y��'9�!�'<�s�1�Q�4�y�'H�$�)�)�T[�J\�]^�J_�be�fg�hi�fj�bk�Jk�%m��	�	�'�"��t�y�y� �T�W�_�$(�I�I�d�O�A�$6��Q�q�T��$B�D�I�I�d�O�TU�DV�Y\�]^�_`�]a�Yb�Db�"d��	�	�$���9�9�
z���b�j�j�(� "�
�
�7� 3�z��"�?�?�4��6�37�9�9�W�3E�a�3H�3�q�QR�t�9�3T�VZ�V_�V_�`g�Vh�ij�Vk�nq�rs�tu�rv�nw�Vw�1y�D�I�I�g�.�z�
z�
	z��I�I�	q�D�!�#�&L�d�i�i�X\�o�_c�_h�_h�im�_n�"o�p�D�H�H�T�N�	q��2�8�8���I�I���T�Y�Y�'�ruN�	rzr{r|rar�rNr�rhr�r}rur`r/r/�s ���
��*�&>�(rur/c�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�dstat_disk24c���d|_d|_tjd�|_|jd�|jr|jstd��d|_	y)Nr1r3r4z/proc/partitionszRKernel has no per-partition I/O accounting [CONFIG_BLK_STATS], use at least 2.4.20r	)
r�r�r6r7r8r�r�r�r�rtrxs r`razdstat_disk24.__init__LsN��$��	���	��*�*�%p�q����	�	�$�%��7�7�4�=�=��p�q�q���	ruc��g}|j�D]C}t|�dks|ddk(st|d�dzdk7r�.|d}|j|��E|D]}|j|��|st	d��|S)N�r�majorr�r�r>)r�rYr+rNr�r@s      r`r�zdstat_disk24.discoverUs��������"�	�A��1�v��{�a��d�g�o��Q�q�T��R��1�1D�h��Q�4�D��J�J�t��	��-�D�S�Z�Z��-�-���H�I�I��
ruc���|dddk(r�tjj|�r�tjj|�r�tj|�}|ddk7r\tjjtjj
|�|�}tjj|�}td|�d|���|}|ddStd|z�y|SrCrErLs   r`rNzdstat_disk24.basename`rOruc���g}tjr.tt|jtj��}nctj
sd}nPg}|jD]/}|jj|�r�|j|��1|j�|D]8}||jdgzvs|tjvs�(|j|��:|SrQ)rrr=rrRrNrr�r8rSrNrTrIrUs    r`r�zdstat_disk24.varsus�����
�;�;��3�t�}�}�b�k�k�:�;�G���� �G��G��
�
�
%���?�?�(�(��.�����t�$�
%�
�L�L�N��	!�D��t�}�}��y�0�0�D�B�J�J�4F��
�
�4� �	!��
ruc�X�|jD�cgc]}dt|�z��c}Scc}wrWrXrZs  r`rhzdstat_disk24.name�r[r\c	��|jD]}d|j|<�|j�D�]�}t|�dks|ddk(st	|d�dzdk7r�/|d}|j
j
|�sO|jddt	|d	�z|jddt	|d
�zf|jd<||jvrO|j|dt	|d	�z|j|dt	|d
�zf|j|<|jD]�}|tjvs�tj|D]h}tj||�s�|j|dt	|d	�z|j|dt	|d
�zf|j|<�j�����|jD]@}ttd�|j||j|��|j|<�Bttjk(r&|jj!|j�yy)Nr^rorrprrqr�r�r�
c� �||z
dztzSr`rarcs  r`rez&dstat_disk24.extract.<locals>.<lambda>�rfru)r�r�r�rYr+r8rSrrrIrhrrRr�r�rr<rAris     r`r�zdstat_disk24.extract�s1���I�I�7�D��t�y�y���7����"�	{�A��1�v��{�a��d�g�o��Q�q�T��R��1�1D�h��Q�4�D��?�?�(�(��.�'+�y�y��'9�!�'<�s�1�Q�4�y�'H�$�)�)�T[�J\�]^�J_�be�fg�hj�fk�bl�Jl�%n��	�	�'�"��t�y�y� �$(�I�I�d�O�A�$6��Q�q�T��$B�D�I�I�d�O�TU�DV�Y\�]^�_a�]b�Yc�Dc�"e��	�	�$���9�9�
{���b�j�j�(� "�
�
�7� 3�{��"�?�?�4��6�37�9�9�W�3E�a�3H�3�q�QR�t�9�3T�VZ�V_�V_�`g�Vh�ij�Vk�nq�rs�tv�rw�nx�Vx�1z�D�I�I�g�.�{�
{�	{��I�I�	q�D�!�#�&L�d�i�i�X\�o�_c�_h�_h�im�_n�"o�p�D�H�H�T�N�	q��2�8�8���I�I���T�Y�Y�'�ruNrjr}rur`rlrlKs ���	��*�$>�(rurlc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�dstat_disk24_oldc��d|_d|_tjd�|_tjd�|_|j
d�d|_y)Nr1r3r4z-^\((\d+),(\d+)\):\(\d+,\d+,(\d+),\d+,(\d+)\)$r�r	)r�r�r6r7r8�regexpr�rtrxs r`razdstat_disk24_old.__init__�sE��$��	���	��*�*�%p�q����j�j�!P�Q����	�	�,����	ruc	���g}|jd�D]�}t|�dkr�|d}|dk7r�tj�ddD]t}|jj|�}|s�!|j
�}t|�dkr�@tt|d�t|d��}|j|��vn|D]}|j|��|std��|S)Nr�r�r�disk_iorrr>)r�rYr�rOr{rS�groups�devr+rNr�)rZr�r�r�rh�pair�mrs        r`r�zdstat_disk24_old.discover�s���������%�	�A��1�v��z�8��Q�4�D��y� �(��
�
��Q�R�(�
!���K�K�%�%�d�+���(��H�H�J���q�6�A�:�x��3�q��t�9�c�!�A�$�i�0���
�
�4� �

!�
�	��-�D�S�Z�Z��-�-���H�I�I��
ruc��g}tjrtj}nctjsd}nPg}|jD]/}|jj|�r�|j
|��1|j�|D]8}||jdgzvs|tjvs�(|j
|��:|SrQ)	rrr=rr�r8rSrNrTrIrUs    r`r�zdstat_disk24_old.vars�s�����
�;�;��k�k�G���� �G��G��
�
�
%���?�?�(�(��.�����t�$�
%�
�L�L�N��	!�D��t�}�}��y�0�0�D�B�J�J�4F��
�
�4� �	!��
ruc�F�|jD�cgc]}d|z��	c}Scc}wrW�r�rZs  r`rhzdstat_disk24_old.name����(,�	�	�2���t��2�2��2��c
��|jD]}d|j|<�|jd�D�]}t�dkr�|d}|dk7r�|j	�ddD�]�}|j
j
|�}|s�"|j�}t|�dkr�Att|d�t|d��}|jj
|�sO|jddt|d	�z|jddt|d�zf|jd<||jvrT|dk7rO|j|dt|d	�z|j|dt|d�zf|j|<|jD]�}|tjvs�tj|D]h}tj||�s�|j|dt|d	�z|j|dt|d�zf|j|<�j�����n|jD]@}ttd
�|j ||j|��|j"|<�Bt$tj&k(r&|j j)|j�yy)Nr^r�r�rr}rrr�r	c� �||z
dztzSr`rarcs  r`rez*dstat_disk24_old.extract.<locals>.<lambda>�rfru)r�r�r�rYrOr{rSr~rr+r8rrrIrhrrRr�r�rr<rA)rZrhr�r�r�r�rIr(s        r`r�zdstat_disk24_old.extract�s����I�I�7�D��t�y�y���7��O�O�C�(�	�D��1�v��z�8��Q�4�D��y� �(��
�
��Q�R�(�
~���K�K�%�%�d�+���(��H�H�J���q�6�A�:�x��3�q��t�9�c�!�A�$�i�0�����,�,�T�2�+/�9�9�W�+=�a�+@�3�q��t�9�+L�d�i�i�X_�N`�ab�Nc�fi�jk�lm�jn�fo�No�)q�D�I�I�g�&��4�9�9�$����(,�	�	�$���(:�S��1��Y�(F��	�	�RV��XY�HZ�]`�ab�cd�ae�]f�Hf�&h�D�I�I�d�O�#�y�y�~�G��"�*�*�,�$&�J�J�w�$7�~�D�&���t�T�:�7;�y�y��7I�!�7L�s�ST�UV�SW�y�7X�Z^�Zc�Zc�dk�Zl�mn�Zo�ru�vw�xy�vz�r{�Z{�5}��	�	�'� 2�~�~�
~�
�'	�*�I�I�	q�D�!�#�&L�d�i�i�X\�o�_c�_h�_h�im�_n�"o�p�D�H�H�T�N�	q��2�8�8���I�I���T�Y�Y�'�ruNrr}rur`ryry�s����&�$3�(ruryc��eZdZd�Zd�Zy)�dstat_epochc�j�d|_d|_d|_tjrd|_d|_y)Nr5)r5rvr;r)rhr�r�rrrr�rxs r`razdstat_epoch.__init__�s,����	���	���
�
�8�8��D�J���
ruc�*�t|jd<y)Nr5)�	starttimer�rxs r`r�zdstat_epoch.extract�s��%�����ruNr�r}rur`r�r��s���&rur�c��eZdZd�Zd�Zy)�dstat_fsc�J�d|_d|_d|_d|_d|_y)Nr)�files�inodesr�r���rhr�r�r�r�rxs r`razdstat_fs.__init__�s%�� ��	�'��	���	���
���
ruc�J�td�D]<}|j�}t|�dkr�"t|d�|jd<�>td�D]K}|j�}t|�dkr�"t|d�t|d�z
|jd<�My)Nz/proc/sys/fs/file-nrrrr�z/proc/sys/fs/inode-nrr	r�)r�rOrYr+r�)rZr�r�s   r`r�zdstat_fs.extracts����0�1�	*�D��
�
��A��1�v��z�8� #�A�a�D�	�D�H�H�W��	*��1�2�	7�D��
�
��A��1�v��z�8�!$�Q�q�T��S��1��Y�!6�D�H�H�X��	7ruNr�r}rur`r�r��s���7rur�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�	dstat_intc��d|_d|_d|_d|_|j	d�|j�|_y)N�
interruptsr�r�r�r�)rhr�r�r�r��intmaprxs r`razdstat_int.__init__s7�� ��	���	���
���
��	�	�,���k�k�m��ruc�L�i}td�D]�}|j�}t|�tkr�&|djd�d}dj	|tdzd�jd�}|||<|D]#}|||j�j
�<�%��|S)N�/proc/interruptsrr�r�r	r')r�rOrYrrP�strip�lower)rZr�r�r��l1�l2rhs       r`r�zdstat_int.intmaps������,�-�	/�D��
�
��A��1�v�����1����C���#�B����!�E�!�G�H�+�&�,�,�S�1�B��C��G��
/��,.��D�J�J�L�&�&�(�)�
/�
	/��
ruc���g}|j�D]J}|ddk7r�t|dd�D].\}}t|�dkDs�|jt	|���0�L|S)Nr�intrr	rv)r�r�r+rNr)rZr�r�r�rhr�s      r`r�zdstat_int.discover#si�������"�	6�A���t�v�~�x�$�Q�q�r�U�+�
6���a��q�6�B�;��
�
�3�t�9� 5�
6�	6��
ruc���g}tjrtj}nL|j}|D]}|dvs�|j|��tjst|�dkDr|dd}|D]o}||jdgzvr|j
|��'|j�|jvs�D|j
|j|j���q|S)N)r<�1�2�8�NMI�LOC�MIS�CPU0r����r��	rrr>r�rUrrYrNr�r�rUs    r`r�zdstat_int.vars3s�����
�:�:��j�j�G��m�m�G��
)���L�L��N�N�4�(�
)��7�7�s�7�|�a�/�7�2�3�<���	6�D��t�}�}��z�1�1��
�
�4� ��������,��
�
�4�;�;�t�z�z�|�4�5�		6�
�
ruc��|j�D]f}|r|ddk7r�|jD]/}|dk7s�	t|t|�dz�|j|<�1t|d�|jd<�h|jD]8}|j||j|z
dzt
z|j|<�:ttjk(r&|jj|j�yy)Nrr�r�r	r��?)r�r�r+r�r�rbr�rrrr<rAr s   r`r�zdstat_int.extractDs������"�	+�A���!������	�	�
<���7�?�&)�!�C��I��M�*:�&;�D�I�I�d�O�
<�"%�Q�q�T��D�I�I�g��	+��I�I�	Q�D�"�i�i��o��	�	�$��?�3�F��P�D�H�H�T�N�	Q��2�8�8���I�I���T�Y�Y�'�ruN�rzr{r|rar�r�r�r�r}rur`r�r�s��$�
�� �"(rur�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�dstat_int24c�^�d|_d|_d|_d|_|j	d�y)Nr�r�r�r�r�)rhr�r�r�r�rxs r`razdstat_int24.__init__Ss+�� ��	���	���
���
��	�	�$�%ruc�6�i}|j�D]�}t|�tkr�|djd�d}dj	|tdzd�jd�}|||<|D]#}|||j�j
�<�%��|S)Nrr�r�r	r')r�rYrrOrPr�r�)rZr�r�r�r�rhs      r`r�zdstat_int24.intmapZs��������"�	/�A��1�v�����1����C���#�B����!�E�!�G�H�+�&�,�,�S�1�B��C��G��
/��,.��D�J�J�L�&�&�(�)�
/�	/��
ruc���g}|j�D]R}t|�tdzkr�|djd�d}t	|d�dkDs�B|j|��T|S)Nrrr�rv)r�rYrrOr+rN)rZr�r�r�rhs     r`r�zdstat_int24.discoveresg�������"�	!�A��1�v��a�����Q�4�:�:�c�?�1�%�D��1�Q�4�y�2�~��
�
�4� �		!�
�
ruc���g}tjrtj}nL|j}|D]}|dvs�|j|��tjst|�dkDr|dd}|D]k}||jvr|j
|��#|j�|jvs�@|j
|j|j���m|S)N)	r<r�r�r�r��ERRr�r�r�r�r�r�rUs    r`r�zdstat_int24.varsvs�����
�:�:��j�j�G��m�m�G��
)���S�S��N�N�4�(�
)��7�7�s�7�|�a�/�7�2�3�<���	6�D��t�}�}�$��
�
�4� ��������,��
�
�4�;�;�t�z�z�|�4�5�		6�
�
ruc�>�|j�D]�}t|�tdzkr�|djd�d}||jvs�?d|j
|<|ddtzD]*}|j
|t
|�z|j
|<�,��|j
D]8}|j
||j|z
dztz|j|<�:ttjk(r&|jj|j
�yy)Nrrr�r�)r�rYrrOr�r�r+r�rbr�rrrr<rArs    r`r�zdstat_int24.extract�s������"�	?�A��1�v��a�����Q�4�:�:�c�?�1�%�D��t�y�y� �"#��	�	�$���1�Q�u�W��?�A�&*�i�i��o��A��&>�D�I�I�d�O�?�	?��I�I�	Q�D�"�i�i��o��	�	�$��?�3�F��P�D�H�H�T�N�	Q��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`r�r�Rs��&�	��"�"(rur�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�dstat_ioc��d|_d|_d|_d|_t	j
d�|_|jd�d|_y)Nr1r�r�r�r4r5r	)	r�r�r�r�r6r7r8r�rtrxs r`razdstat_io.__init__�sC��$��	���	���
���
��*�*�%p�q����	�	�#�$���	ruc���g}|j�D]4}t|�dkr�|dddgdzk(r�|d}|j|��6|D]}|j|��|std��|Sr:r?r@s      r`r�zdstat_io.discover�rAruc��g}tjrtj}nptjsd}n]g}|jD]<}|jj|�r�|t
�vr�,|j|��>|j�|D]8}||jdgzvs|tjvs�(|j|��:|SrQ)
rrr=rr�r8rSrTrNrTrIrUs    r`r�z
dstat_io.vars�s�����
�;�;��k�k�G���� �G��G��
�
�
%���?�?�(�(��.���|�~�-�x����t�$�
%�

�L�L�N��	!�D��t�}�}��y�0�0�D�B�J�J�4F��
�
�4� �	!��
ruc�F�|jD�cgc]}d|z��	c}Scc}w)Nzio/r�rZs  r`rhz
dstat_io.name�s��'+�y�y�1�t��d�
�1�1��1r�c	���|jD]}d|j|<�|j�D�]�}t|�dkr�|ddk(r	|ddk(r�$|d}|dddgdzk(r�6|jj|�sO|jdd	t
|d�z|jdd
t
|d�zf|jd<||jvrT|dk7rO|j|d	t
|d�z|j|d
t
|d�zf|j|<|jD]�}|tjvs�tj|D]h}tj||�s�|j|d	t
|d�z|j|d
t
|d�zf|j|<�j�����|jD]@}ttd�|j||j|��|j|<�Bttjk(r&|jj!|j�yy)Nr^r;r�r<rr	r=r�rrc� �||z
dztzS�Nr�rarcs  r`rez"dstat_io.extract.<locals>.<lambda>�s��A��E�S�=�7�3J�rurgris     r`r�zdstat_io.extract�sG���I�I�7�D��t�y�y���7����"�
	z�A��1�v��{�H���t�s�{�q��t�s�{�H��Q�4�D����u�����#�X��?�?�(�(��.�'+�y�y��'9�!�'<�s�1�Q�4�y�'H�$�)�)�T[�J\�]^�J_�be�fg�hi�fj�bk�Jk�%m��	�	�'�"��t�y�y� �T�W�_�$(�I�I�d�O�A�$6��Q�q�T��$B�D�I�I�d�O�TU�DV�Y\�]^�_`�]a�Yb�Db�"d��	�	�$���9�9�
z���b�j�j�(� "�
�
�7� 3�z��"�?�?�4��6�37�9�9�W�3E�a�3H�3�q�QR�t�9�3T�VZ�V_�V_�`g�Vh�ij�Vk�nq�rs�tu�rv�nw�Vw�1y�D�I�I�g�.�z�
z�
	z��I�I�	o�D�!�#�&J�D�I�I�VZ�O�]a�]f�]f�gk�]l�"m�n�D�H�H�T�N�	o��2�8�8���I�I���T�Y�Y�'�ruNrr}rur`r�r��s���
��&2�(rur�c��eZdZd�Zd�Zy)�	dstat_ipcc�J�d|_d|_d|_d|_d|_y)Nzsysv ipc)�msg�sem�shmr�r�rvr�rxs r`razdstat_ipc.__init__�s%����	�)��	���	���
���
ruc��|jD]7}ttd|z�j��dz
|j|<�9y)Nz/proc/sysvipc/r)r�rYr�r�r�rZs  r`r�zdstat_ipc.extract�sB���I�I�	O�D� ��'7��'<�!=�!G�!G�!I�J�Q�N�D�H�H�T�N�	OruNr�r}rur`r�r��s
���Orur�c��eZdZd�Zd�Zy)�
dstat_loadc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nzload avg)�1m�5m�15m)�load1�load5�load15r�rg�?z
/proc/loadavg�rhr�r�r�r�r�r�rxs r`razdstat_load.__init__�s8����	�'��	�0��	���	���
���
��	�	�/�"ruc���|j�D]b}t|�dkr�t|d�|jd<t|d�|jd<t|d�|jd<�dy)Nr�rr�rr�r	r�)r�rYrr�r�s  r`r�zdstat_load.extract�sg�����"�	-�A��1�v��z�8� %�a��d��D�H�H�W�� %�a��d��D�H�H�W��!&�q��t��D�H�H�X��		-ruNr�r}rur`r�r��s��#�-rur�c��eZdZd�Zd�Zy)�
dstat_lockc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nz
file locks)�pos�lck�rea�wri)�posix�flockr��writer�r�rvz/proc/locksr�rxs r`razdstat_lock.__init__�s8�� ��	�0��	�7��	���	���
���
��	�	�-� ruc��|jD]}d|j|<�|j�D]�}t|�dkr�|ddk(r|jdxxdz
cc<n|ddk(r|jdxxdz
cc<|dd	k(r|jd
xxdz
cc<�q|ddk(s�z|jdxxdz
cc<��y)
Nrrr�POSIXr��FLOCKr�r��READr��WRITEr��r�r�r�rY�rZrhr�s   r`r�zdstat_lock.extracts����I�I�1�D��t�x�x��~�1����"�	9�A��1�v��z�8���t�w������ 1�Q� 6� 1��1����$�(�(�7�"3�q�"8�"3���t�v�~�t�x�x��/�1�4�/��1����$�(�(�7�"3�q�"8�"3�	9ruNr�r}rur`r�r��s��!�9rur�c��eZdZd�Zd�Zy)�	dstat_memc�P�d|_d|_d|_|jd�y)Nzmemory usage)�used�free�buff�cach)�MemUsed�MemFree�Buffers�Cached�
/proc/meminfo�rhr�r�r�rxs r`razdstat_mem.__init__s#��"��	�4��	�?��	��	�	�/�"ruc��d}i}|j�D]m}t|�dkr�|djd�d}||jvrt	|d�dz|j
|<||vs�Zt	|d�dz||<�o|d|j
dz
|j
d	z
|j
d
z
|dz
|dz|j
d
<y)N)�MemTotal�Shmem�SReclaimabler	rr�r��@r�r�r�r�r�r�r��r�rYrOr�r+r�)rZ�adv_extract_vars�adv_valr�rhs     r`r�zdstat_mem.extracts��@�������"�	3�A��1�v��z�8��Q�4�:�:�c�?�1�%�D��t�y�y� �!$�Q�q�T��V�!3�������'�'� #�A�a�D�	�F� 2���
�
	3�&�j�1�D�H�H�Y�4G�G�$�(�(�S\�J]�]�`d�`h�`h�iq�`r�r�u|�~L�vM�M�PW�X_�P`�`�����ruNr�r}rur`r�r�
s
��#�`rur�c��eZdZdZd�Zy)�
dstat_mem_advz�
    Advanced memory usage

    Displays memory usage similarly to the internal plugin but with added total, shared and reclaimable counters.
    Additionally, shared memory is added and reclaimable memory is subtracted from the used memory counter.
    c�P�d|_d|_d|_|jd�y)Nzadvanced memory usage)r�r�r�r�r��dirty�shmem�recl)r�r�r�r�r��Dirtyr�r�r�r�rxs r`razdstat_mem_adv.__init__(s#��+��	�W��	�m��	��	�	�/�"ruN)rzr{r|�__doc__rar}rur`r�r�!s���#rur�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�	dstat_netc��d|_d|_tjd�|_|jd�d|_y)N)�recv�sendr3z^(lo|bond\d+|face|.+\.\d+)$z
/proc/net/devr	)r�r�r6r7�totalfilterr�rtrxs r`razdstat_net.__init__/s5��$��	���	��:�:�&C�D����	�	�/�"���	ruc��g}|jd��D]=}t|�dkr�|ddk(r	|ddk(r�#|d}|dvs�-|j|��?|j�|D]}|j|��|S)	Nr��r��r	r<rvr)�lo�facerr@s      r`r�zdstat_net.discover6s����������-�	!�A��1�v��{�H���t�s�{�q��u��|�X��Q�4�D��>�)��
�
�4� �	!�	���
��-�D�S�Z�Z��-�-��
ruc��g}tjrtj}n/tjsd}n|j}|j	�|D]'}||jddgzvs�|j|��)|st
d��|S)Nrr�r
z/No suitable network interfaces found to monitor)rrr?rr�rTrNr�rUs    r`r�zdstat_net.varsBs{����
�:�:��j�j�G���� �G��m�m�G��L�L�N��	!�D��t�}�}����6�6��
�
�4� �	!���M�N�N��
ruc�F�|jD�cgc]}d|z��	c}Scc}w)Nznet/r�rZs  r`rhzdstat_net.nameSr�r�c	���ddg|jd<|jd��D]�}t|�dkr�|ddk(r	|ddk(r�#|d}||jvr)t	|d	�t	|d
�f|j|<|j
j
|�r�{|jddt	|d	�z|jdd	t	|d
�zf|jd<��tr�|jD]�}ttd�|j||j|��|j|<|j|ddkr!|j|dxxtd	zz
cc<|j|d	dks��|j|d	xxtd	zz
cc<��ttjk(r&|jj|j�yy)Nrr�r�rr	r	r<rvrr�c� �||z
dztzSr�rarcs  r`rez#dstat_net.extract.<locals>.<lambda>cs���A���}�w�7N�ru)r�r�rYr�r+rrSrArrRr�r��maxintrrrr<r s   r`r�zdstat_net.extractVs�����V��	�	�'�������-�	m�A��1�v��{�H���t�s�{�q��u��|�X��Q�4�D��t�y�y� �$'��!��I�s�1�Q�4�y�":��	�	�$���#�#�)�)�$�/�'+�y�y��'9�!�'<�s�1�Q�4�y�'H�$�)�)�T[�J\�]^�J_�be�fg�hi�fj�bk�Jk�%l��	�	�'�"�	m���	�	�
J��!%�c�*N�PT�PY�PY�Z^�P_�ae�aj�aj�ko�ap�&q�!r�������8�8�D�>�!�$�q�(�$�(�(�4�.��*;�v��z�*I�*;��8�8�D�>�!�$�q�(�$�(�(�4�.��*;�v��z�*I�*;�
J�
�2�8�8���I�I���T�Y�Y�'�ruNrr}rur`rr.s���
��"3�(rurc��eZdZd�Zd�Zy)�
dstat_pagec�^�d|_d|_d|_d|_|j	d�y)N�paging��in�out��pswpin�pswpoutr��/proc/vmstat�rhr�r�r�r�rxs r`razdstat_page.__init__ks*����	�!��	�)��	���	��	�	�.�!ruc��|j�D]@}t|�dkr�|d}||jvs�&t|d�|j|<�B|jD]?}|j||j
|z
tzdztz|j|<�Attjk(r&|j
j|j�yy�Nr	rrr�)
r�rYr�r+r�r��pagesizerbr�rrrr<rAr s   r`r�zdstat_page.extractrs������"�	,�A��1�v��z�8��Q�4�D��t�y�y� �"%�a��d�)��	�	�$��		,��I�I�	\�D�"�i�i��o��	�	�$��?�8�K�c�Q�T[�[�D�H�H�T�N�	\��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`rrjs��"�(rurc��eZdZd�Zd�Zy)�dstat_page24c�^�d|_d|_d|_d|_|j	d�y)Nrrrr�r�rrxs r`razdstat_page24.__init__�s*����	�!��	�)��	���	��	�	�,�ruc���|j�D]S}t|�dkr�|d}|dk7r�t|d�|jd<t|d�|jd<n|jD]?}|j||j
|z
tzdztz|j|<�Attjk(r&|j
j|j�yy)	Nr�rr3rrr	rr�)
r�rYr+r�r�r�rrbr�rrrr<rAr s   r`r�zdstat_page24.extract�s������"�	�A��1�v��z�8��Q�4�D��v�~�x�"%�a��d�)�D�I�I�h��#&�q��t�9�D�I�I�i� ��
	��I�I�	\�D�"�i�i��o��	�	�$��?�8�K�c�Q�T[�[�D�H�H�T�N�	\��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`r!r!s�� �
(rur!c��eZdZd�Zd�Zy)�
dstat_procc�z�d|_d|_d|_d|_d|_d|_|j
d�y)N�procs)�run�blk�new)�
procs_running�
procs_blocked�	processesr�r�rvr�r�rxs r`razdstat_proc.__init__�s8����	�)��	�C��	���	���
���
��	�	�,�ruc���|j�D]�}t|�dkr�|d}|dk(r+d|jd<t|d�|j|<�G|dk(r/|j|t|d�zdz
|j|<�{|dk(s��|j|t|d�z|j|<��|jd|j
dz
dztz|jd<dD]!}|j|dz|j|<�#ttjk(r<|j
j|j�dD]}d|j|<�yy)	Nr	rr-rr+r,r�)r+r,)r�rYr�r+r�r�rbrrrr<rAr s   r`r�zdstat_proc.extract�sS�����"�		>�A��1�v��z�8��Q�4�D��{�"�()�����%�"%�a��d�)��	�	�$����(�"&�)�)�D�/�C��!��I�"=��"A��	�	�$����(�"&�)�)�D�/�C��!��I�"=��	�	�$��		>�"&���;�!7�$�)�)�K�:P�!P�TW� W�Za� a������6�	3�D�!�Y�Y�t�_�s�2�D�H�H�T�N�	3��2�8�8���I�I���T�Y�Y�'�:�
$��"#��	�	�$��
$�ruNr�r}rur`r%r%�s�� �$rur%c��eZdZd�Zd�Zy)�	dstat_rawc�z�d|_d|_d|_d|_d|_d|_|j
d�y)N�raw)r2)�socketsr�rr�z
/proc/net/rawr�rxs r`razdstat_raw.__init__�s8����	���	� ��	���	���
���
��	�	�/�"ruc�Z�d}|j�D]}|dz
}�	||jd<y)Nr
rr3)r�r�)rZ�linesr�s   r`r�zdstat_raw.extract�s4�����N�N�$�	�D��Q�J�E�	�#�����ruNr�r}rur`r0r0�s��#�$rur0c��eZdZd�Zd�Zy)�dstat_socketc�z�d|_d|_d|_d|_|j	d�d|_d|_y)Nr3r�rr�z/proc/net/sockstat)�tot�tcp�udpr2�frg)�sockets:�TCP:�UDP:�RAW:�FRAG:)rhr�r�r�r�r�r�rxs r`razdstat_socket.__init__�s9����	���	���
���
��	�	�&�'�7��	�A��	ruc�@�|j�D]/}t|�dkr�t|d�|j|d<�1|jd|jdz
|jdz
|jdz
|jdz
|jd	<y)
Nr�r	rr=r>r?r@rA�otherr�r�s  r`r�zdstat_socket.extract�s������"�	'�A��1�v��z�8� ��1��Y�D�H�H�Q�q�T�N�	'�!�H�H�Z�0�4�8�8�F�3C�C�d�h�h�v�FV�V�Y]�Ya�Ya�bh�Yi�i�lp�lt�lt�u|�l}�}�����ruNr�r}rur`r7r7�s��B�~rur7c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�
dstat_swapc�P�d|_d|_d|_|jd�y)Nr3�r�r�r�z/proc/swaps)rhr�r�r�rxs r`razdstat_swap.__init__�s#����	�$��	���	��	�	�-� ruc�$�g}|j�D]K}t|�dkr�|ddk(r�	t|d�t|d�|j|d��M|j	�|D]}|j|��|S#Y�|xYw)Nr�r�Filenamer	r�)r�rYr+rNrTrs     r`r�zdstat_swap.discover�s��������"�		�A��1�v��z�8���t�z�!�8�
��A�a�D�	��A�a�D�	�
�J�J�q��t��		�	���
��-�D�S�Z�Z��-�-��
��

��s�B�Bc��g}tjrtj}n/tjsd}n|j}|j	�|D]&}||jdgzvs�|j|��(|st
d��|S)Nrr�z)No suitable swap devices found to monitor)rrr@rr�rTrNr�rUs    r`r�zdstat_swap.vars�sy����
�;�;��k�k�G���� �G��m�m�G��L�L�N��	!�D��t�}�}��y�0�0��
�
�4� �	!���G�H�H��
ruc�X�|jD�cgc]}dt|�z��c}Scc}w)Nzswp/)r��improverZs  r`rhzdstat_swap.names#��15���;���w�t�}�$�;�;��;r\c��ddg|jd<|j�D]�}t|�dks|ddk(r�|d}t|d�dzt|d�t|d�z
dzf|j|<|jdd|j|dz|jdd|j|dzf|jd<��y)	Nrr�r�rIr�r�r	r)r�r�rYr+r s   r`r�zdstat_swap.extracts�����F���������"�	v�A��1�v��z�Q�q�T�Z�/���Q�4�D�"�1�Q�4�y�6�1�C��!��I��A�a�D�	�4I�V�3S�U�D�H�H�T�N�"&�(�(�7�"3�A�"6����$���9J�"J�D�H�H�U\�L]�^_�L`�cg�ck�ck�lp�cq�rs�ct�Lt� u�D�H�H�W��		vruNrr}rur`rErE�s��!�� �"<�vrurEc��eZdZd�Zd�Zy)�dstat_swap_oldc�^�d|_d|_d|_d|_|j	d�y)Nr3rG)�SwapUsed�SwapFreer�r�rrxs r`razdstat_swap_old.__init__s*����	�$��	�,��	���	��	�	�/�"ruc�2�|j�D]X}t|�dkr�|djd�d}||jdzvs�;t	|d�dz|j
|<�Z|j
d|j
dz
|j
d	<y)
Nr	rr�)�	SwapTotalrr�rTrRrQr�r s   r`r�zdstat_swap_old.extracts������"�	4�A��1�v��z�8��Q�4�:�:�c�?�1�%�D��t�y�y�>�1�1�!$�Q�q�T��V�!3������		4� $�x�x��4�t�x�x�
�7K�K�����ruNr�r}rur`rOrOs
��#�LrurOc��eZdZd�Zd�Zy)�	dstat_sysc�z�d|_d|_d|_d|_d|_d|_|j
d�y)N�system)r+�csw)r��ctxtr�r�r�r�r�rxs r`razdstat_sys.__init__s8����	�"��	�$��	���	���
���
��	�	�,�ruc��|j�D]@}t|�dkr�|d}||jvs�&t|d�|j|<�B|jD]8}|j||j
|z
dztz|j|<�:ttjk(r&|j
j|j�yyr)r�rYr�r+r�r�rbr�rrrr<rAr s   r`r�zdstat_sys.extract&s������"�	,�A��1�v��z�8��Q�4�D��t�y�y� �"%�a��d�)��	�	�$��		,��I�I�	Q�D�"�i�i��o��	�	�$��?�3�F��P�D�H�H�T�N�	Q��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`rVrVs�� �(rurVc��eZdZd�Zd�Zy)�	dstat_tcpc�|�d|_d|_d|_d|_d|_d|_|j
dd�y)	Nztcp sockets)�lis�act�syn�tim�clo)�listen�establishedra�wait�closer�rr�z
/proc/net/tcpz/proc/net/tcp6r�rxs r`razdstat_tcp.__init__4s;��!��	�7��	�E��	���	���
���
��	�	�/�#3�4ruc���|jD]}d|j|<�|j�D]�}t|�dkr�|ddvr|jdxxdz
cc<�1|ddvr|jdxxdz
cc<�P|dd	vr|jd
xxdz
cc<�o|ddvr|jdxxdz
cc<��|dd
vs��|jdxxdz
cc<��y)Nr�r�)�0Ardr)�01re)�02�03�09ra)�06rf)�04�05�07�08�0Brgr�r�s   r`r�zdstat_tcp.extract=s����I�I�1�D��t�x�x��~�1����"�		Q�A��1�v��{�H���t�w������ 2�a� 7� 2��1����$�(�(�=�"9�Q�">�"9��1��,�,�d�h�h�u�o��.B�o��1����$�(�(�6�"2�a�"7�"2��1��8�8�$�(�(�7�:K�q�:P�:K�		QruNr�r}rur`r]r]3s
��5�Qrur]c��eZdZd�Zd�Zy)�
dstat_timec��d|_tjd�xsd|_d|_t
jrDttj|jtj���dz|_n@ttj|jtj���|_d|_d|_
y)NrX�
DSTAT_TIMEFMTz%d-%m %H:%M:%S�srr)r4)rhrgrl�timefmtr�rrrrYr4�strftime�	localtimer�r�r�rxs r`razdstat_time.__init__Ks�����	��y�y��1�E�5E�����	�
�8�8��T�]�]�4�<�<����9I�J�K�a�O�D�J��T�]�]�4�<�<����9I�J�K�D�J���
���	ruc�h�tjr^tj|jtj
t��dttdzdz�zz|jd<ytj|jtj
t��|jd<y)Nz.%03dr�r4)	rrrr4r{rzr|r�r�r�rxs r`r�zdstat_time.extractWs���
�8�8�#�}�}�T�\�\�4�>�>�)�;T�U�X_�ch�ir�uy�iy�}A�jA�dC�YD� D�D�H�H�V��#�}�}�T�\�\�4�>�>�)�;T�U�D�H�H�V�ruNr�r}rur`rvrvJs
��	�Vrurvc��eZdZd�Zd�Zy)�	dstat_udpc�|�d|_d|_d|_d|_d|_d|_|j
dd�y)	Nr;)r_r`)rdrer�rr�z
/proc/net/udpz/proc/net/udp6r�rxs r`razdstat_udp.__init__^s;����	�"��	�-��	���	���
���
��	�	�/�#3�4ruc���|jD]}d|j|<�|j�D]B}|ddk(r|jdxxdz
cc<�#|ddk(s�,|jdxxdz
cc<�Dy)Nrr�rrrdrrkre�r�r�r�r�s   r`r�zdstat_udp.extractgso���I�I�1�D��t�x�x��~�1����"�	<�A���t�t�|�T�X�X�h�/�1�4�/��1����t�x�x�
�6�!�;�6�	<ruNr�r}rur`rr]s��5�<rurc��eZdZd�Zd�Zy)�
dstat_unixc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nzunix sockets)�dgmrr_r`)�datagram�streamrdrer�rr�z/proc/net/unixr�rxs r`razdstat_unix.__init__ns9��"��	�0��	�C��	���	���
���
��	�	�"�#ruc�n�|jD]}d|j|<�|j�D]�}|ddk(r|jdxxdz
cc<�#|ddk(s�,|jdxxdz
cc<|dd	k(r|jd
xxdz
cc<�c|ddk(s�l|jdxxdz
cc<��y)
Nrr�0002r�r�0001r�r�rkrdrmrer�r�s   r`r�zdstat_unix.extractws����I�I�1�D��t�x�x��~�1����"�	@�A���t�v�~�t�x�x�
�3�q�8�3��1��������"�a�'�"��Q�4�4�<����(�!3�q�!8�!3��q�T�T�\�4�8�8�M�#:�a�#?�#:�	@ruNr�r}rur`r�r�ms
��$�@rur�c��eZdZd�Zd�Zy)�dstat_vmc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nzvirtual memory)�majpf�minpf�allocr�)�
pgmajfault�pgfaultz	pgalloc_*�pgfreer�r�r�rr�rxs r`razdstat_vm.__init__�s;��$��	�7��	�E��	���	���
���
��	�	�.�!ruc	�0�|jD]}d|j|<�|j�D]_}t|�dkr�|jD]?}t	j|d|�s�|j|xxt|d�z
cc<�A�a|jD]8}|j||j|z
dztz|j|<�:ttjk(r&|jj|j�yy)Nrr	rr�)
r�r�r�rYrhr+r�rbr�rrrr<rAr�s   r`r�zdstat_vm.extract�s����I�I�	 �D��D�I�I�d�O�	 ����"�	1�A��1�v��z�8��	�	�
1���?�?�1�Q�4��.��I�I�d�O�s�1�Q�4�y�0�O�
1�	1��I�I�	Q�D�"�i�i��o��	�	�$��?�3�F��P�D�H�H�T�N�	Q��2�8�8���I�I���T�Y�Y�'�ruNr�r}rur`r�r��s��	"�
(rur�c��eZdZd�Zy)�dstat_vm_advc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nzadvanced virtual memory)�steal�scanK�scanD�pgoru�astll)z	pgsteal_*zpgscan_kswapd_*zpgscan_direct_*�
pageoutrun�
allocstallr�r�r�rr�rxs r`razdstat_vm_adv.__init__�s8��-��	�A��	�c��	���	���
���
��	�	�.�!ruN)rzr{r|rar}rur`r�r��s��"rur�c��eZdZd�Zd�Zy)�dstat_zonesc�z�d|_d|_d|_d|_d|_d|_|j
d�y)Nzzones memory)�d32F�d32H�normF�normH)�
DMA32_free�
DMA32_high�Normal_free�Normal_highr�r�r�z/proc/zoneinfor�rxs r`razdstat_zones.__init__�s;��"��	�7��	�N��	���	���
���
��	�	�"�#ruc�V�|j�D]�}t|�dkr�|djd�r|d}d}|djd�rt|d�|jdz<|djd�s�tr�wt|d�|jd	z<d}��y)
Nr	r�Noder��pages�_free�highr�_high)r�rYrXr+r�)rZr��zone�
found_highs    r`r�zdstat_zones.extract�s������"�		�A��1�v��z�8���t���v�&���t���
���t���w�'�),�Q�q�T������g��&���t���v�&�z�),�Q�q�T������g��&��
�		ruNr�r}rur`r�r��s��	$�
rur��blackz�darkredz�	darkgreenz�
darkyellowz�darkbluez�darkmagentaz�darkcyanz�grayz�darkgrayz�redz�greenz�yellowz�bluez�magentaz�cyanz�whitez�blackbgzzzzzzzz)�redbg�greenbg�yellowbg�bluebg�	magentabg�cyanbg�whitebg�resetz�boldz�reversez�	underlinez�clearz�	clearlinez�savez�restorez�save_allz7�restore_allz8�linewrapz�
nolinewrapz�upz�downz�rightz�leftz�|r��>r�r��+�_r')r�r�r�r�r��plus�
underscorer�c���tj�r*idtd�dtdtdz�dtd�dtd�dtd	td
z�dtd�dtd
�dtd�dtd�dtd�dtd�dtd�dtd�dtd�dtd
tdtdtdtdtdtdtdf�dtdtdtdtdtdtdtd
tdf�}|Sidtd�dtdtdz�dtd�dtd�dtd	td
z�dtd�dtd
�dtd�dtd	�dtd �dtd �dtd�dtd�dtd�dtdtd!tdtdtdtd	td
tdf�dtd
td"tdtdtdtd tdtdf�}|S)#zProvide a set of colors to user�r�r�r�r�r�rrKr�r��	roundtriprr��inputr��done_lor��done_hi�text_lo�text_hi�unit_lo�unit_hi�	colors_lor�r�r�r��	colors_hir�r�r�r�r�r�)rrr9r�ansi)r�s r`�	set_themer�s2��	���
��U�:�&�
���j�)�D��,=�=�
�
�U�:�&�
�
�t�I��	
�

�U�7�^�e�G�n�4�
�
��z�*�

�
�U�9�%�
�
�U�:�&�
�
�u�W�~�
�
�u�Z�(�
�
�u�W�~�
�
�u�Z�(�
�
�u�W�~�
�
�u�Z�(�
�
�%�	�*�E�-�,@�%��BT�V[�\f�Vg��
�+�U�7�^�U�5�\�5�QX�>�[�
�"
�%��,��i�(8�%��.�%�PV�-���-��z�):�E�)�<L�e�T_�N`�b�#
��R�L�)
��U�:�&�
���f�
��[�(9�9�
�
�U�:�&�
�
�t�I��	
�

�U�7�^�e�G�n�4�
�
��z�*�

�
�U�9�%�
�
�U�:�&�
�
�u�W�~�
�
�u�V�}�
�
�u�V�}�
�
�u�Z�(�
�
�u�Z�(�
�
�u�Z�(�
�
�%��,��h���w���v����-��w���y�9I�5�Q\�K]�_�
�"
�%�	�*�E�,�,?��{�AS�UZ�[e�Uf��
�+�U�6�]�E�%�L�%�PW�.�Z�#
��(�Lruc��	tdd�j�D]0}|j�}t|�dkr�"t	|d�cSy#td�j�D]P}|j�}t|�dkr�"|ddk(s�+t
j�t|d�z
ccYSYyxYw)	z)Return the number of 'ticks' since bootupz/proc/uptime�rr	rr��btimerN)r�r�rOrYrr�r4r+)r�r�s  r`�ticksr�0s���
/����-�7�7�9�	�D��
�
��A��1�v��z�8���1��;��	��/��,�'�1�1�3�	/�D��
�
��A��1�v��z�8���t�w���y�y�{�S��1��Y�.�.�		/�s�AA�A�AC�%C�=Cc��|jd�r|jd�d}|S|jd�r|jd�d}|S)zImprove a device namez/dev/mapper/rcr�rDr	)rXrO)�devnames r`rLrL>sR�����.�)��-�-��$�Q�'���N�
�	�	�G�	$��-�-��$�Q�'���Nruc��tjj|�std|z��dt	�vria|t
vr!t
|j
d�t
|St|d�t
|<t
|S)z@Open a file for reuse, if already opened, return file descriptorzFile %s does not exist�fdsrr�)rgrFrGr��globalsr�r�r��r�s r`r�r�Fsu���7�7�>�>�(�#��0�8�;�<�<��G�I�����3���H�
���1���x�=���X�s�+��H�
��x�=�ruc�n�dt�vria|tvrt|j�t|=yy)z7Close an open file and remove file descriptor from listr�N)r�r�rgr�s r`�dcloser�Ss5���G�I��R�s��3���H�
������M�ruc	��ddladt�vria|tvr~	ddl}tj|dddtjtjtj��}|j|j|jft|<t|St|S#t$r)tj|dd�t|<Yt|SwxYw)z6Open a pipe for reuse, if already opened, return pipesrN�pipesT)�shell�bufsize�	close_fds�stdinrGrQ�t)
�selectr�r��asubprocess�
subprocess�Popen�PIPEr�rGrQ�ImportErrorrg�popen3)�cmdrr�s   r`�dpopenr	[s�����g�i����
�%��	0��� � ��D�!�t� �o�o�j�o�o�j�o�o�!�W�A��'�'�1�8�8�Q�X�X�6�E�#�J���:��5��:����	0����3��Q�/�E�#�J���:��	0�s�A4B"�"'C�Cc��d}tj|j�ggg|�ds,	tj|j�ggg|�ds�,tj|j�ggg|�dr?||jd�z}tj|j�ggg|�dr�?|jd�S)z7Read available data from pipe in a non-blocking fashionrrr�
)r�filenor�rO)�fileobj�tmoutr�s   r`�readpiperjs���
�C��m�m�W�^�^�-�.��B��>�q�A���m�m�W�^�^�-�.��B��>�q�A�
�-�-����)�*�B��E�
:�1�
=��G�L�L��O�#���-�-����)�*�B��E�
:�1�
=��9�9�T�?�ruc��d}tj|j�ggg|�ds,	tj|j�ggg|�ds�,tj|j�ggg|�dr\|jd�}|dk7r||z}n|j|�r|Sd}tj|j�ggg|�dr�\tj
rt
d��y)z7Grep available data from pipe in a non-blocking fashionrrrrz-Nothing found during greppipe data collectionN)rrr�rXrrrr�)r
rrr��	characters     r`�greppiperss���
�C��m�m�W�^�^�-�.��B��>�q�A���m�m�W�^�^�-�.��B��>�q�A�
�-�-����)�*�B��E�
:�1�
=��L�L��O�	�����	�/�C�
�^�^�C�
 ��J��C��-�-����)�*�B��E�
:�1�
=�
�x�x��G�H�H�ruc� �d}tj|�}tj|j�ggg|�ds,	tj|j�ggg|�ds�,tj|j�ggg|�dr\|j	d�}|dk7r||z}n|j|�r|Sd}tj|j�ggg|�dr�\tjrtd��y)z8Match available data from pipe in a non-blocking fashionrrrrz.Nothing found during matchpipe data collectionN)	r6r7rrr�rSrrrr�)r
�stringrr�r{rs      r`�	matchpiper�s���
�C�
�Z�Z��
�F��m�m�W�^�^�-�.��B��>�q�A���m�m�W�^�^�-�.��B��>�q�A�
�-�-����)�*�B��E�
:�1�
=��L�L��O�	�����	�/�C�
�\�\�#�
��J��C��-�-����)�*�B��E�
:�1�
=�
�x�x��H�I�I�ruc��tj|dd�}|dj�D]}t|j	���y)Nrrr	)rgrr�r�r��rr�r�s   r`�cmd_testr�sA���I�I�c�3��"�E��a��"�"�$�&����
�
��%�%�&ruc#�rK�tj|dd�}|dj�D]}|���y�w�Nrrr)rgrr�rs   r`�
cmd_readlinesr�s9�����I�I�c�3��"�E��a��"�"�$���
�z��s�57c#�K�tj|dd�}|dj�D]}|j|����y�wr)rgrr�rO)rr�r�r�s    r`�cmd_splitlinesr�sB�����I�I�c�3��"�E��a��"�"�$���
�Z�Z��_���s�AAc#�VK�d}	tj||�}|sy|��|dz
}�#�w)z&Return the lines of a file, one by onerN��	linecache�getline)r�r�r�s   r`�proc_readlinesr"�s:����	
�A�
�� � ��1�-���U��
�	�Q���	�s�')c#�tK�d}	tj||�}|sy|j|���|dz
}�2�w)z/Return the splitted lines of a file, one by onerN�r r!rO)r�r�r�r�s    r`�proc_splitlinesr%�sC����	
�A�
�� � ��1�-���U��j�j��o��	�Q���	�s�68c�.�tj|d�S)zReturn the first line of a filerrr�s r`�
proc_readliner'�s�����X�q�)�)ruc�L�tj|d�j|�S)z(Return the first line of a file splittedrr$)r�r�s  r`�proc_splitliner)�s"�����X�q�)�/�/��4�4ruc#��K�ttj��}tjd�D]}	t	|�||k(r�|���y#t
$rY�'wxYw�w)zReturn a list of process IDsz/proc/N)rrg�getpid�listdirr+�
ValueError)�	dstat_pid�pids  r`�proc_pidlistr0�s^�����B�I�I�K� �I��z�z�(�#���
	���H��i����I����	��	�s4�6A �A�	A �
A�A �	A�A �A�A c���tj�jtjd|d�tj	|df�|�\}}}}|D]}t|d�cSy�Nz
test-agentr�r)�cmdgen�CommandGenerator�getCmd�
CommunityData�UdpTransportTargetr)�server�	community�oid�errorIndication�errorStatus�
errorIndex�varBindsrs        r`�snmpgetr@�sj��9?�9P�9P�9R�9Y�9Y����\�9�a�8��!�!�6�3�-�0��:�6�O�[�*�h�����1�Q�4�y��ruc��g}tj�jtjd|d�tj	|df�|�\}}}}|D]&}|D]}	|jt
|	d���!�(|Sr2)r4r5�nextCmdr7r8rNr)
r9r:r;r�r<r=r>�varBindTablerrds
          r`�snmpwalkrD�s���
�C�=C�=T�=T�=V�=^�=^����\�9�a�8��!�!�6�3�-�0��>�:�O�[�*�l��"���	"�A��J�J�s�1�Q�4�y�!�	"�"��Jruc�~�d}	ttt|���}t|�|kr	||fS||z}|dz}�;)z/Convert decimal to string given base and lengthrr�rr+r�rY)r�r��base�cr�s     r`�dchgrI�sO��	�A�
��#�e�C�j�/�"���s�8�u���
��6�M�	�D�j��
��E��ruc	��d}	|dk(rtd�}	||fSttt||���}t|�|kr{|t|�z
dz
}|dkDrCd|z|z}t|�|kr"|ttt||���k7rn(|dz
}|dkDr�Cttt|���}	||fS||z}|dz}��)z.Convert float to string given scale and lengthrr<rz%%.%dfrF)r�r�rGrHr�r�s      r`�fchgrK�s���	�A�
��!�8��c�(�C��$��6�M��#�e�C��'�(�)���s�8�u����C�� �1�$�A��a�%��!�|�s�*���s�8�u�$���C��c�5�8I�4J�0K�)K����E��	�a�%��#�e�C�j�/�*���
��6�M�	�D�j��
��E��%ruc��d|dz|dzfz}t|�|kDr=d|dzz}t|�|kDr'd|dzdzz}t|�|kDrd|dzdzdzz}|S)z#Convert time string to given lengthz%2dh%02d�<z%2dhz%2dd�z%2dwr)rY)r�r�r�s   r`�tchgrOsy��
��b��#��(�+�
+�C�
�3�x�%����b��!���s�8�e���C�"�H�r�M�*�C��3�x�%����b��2�
�� 1�2���Jruc�V�dx}}|D]}||zt||||�z}td}�!|S)z Return all columns color printedrr�)r�r�)r
r�r�r�r�r�r�s       r`r�r�#sC���N�C�#�����C�i�&��e�U�E�:�:���7�m����Jruc	��d}|dk(rd}d}|dvr|tt|��k\rd}|dz
}|dk7r[|dkrV|r/td	d
j|�ztdztdzStd	d
j|�ztdzS|dk7rtdd
dddddddf	}n"t
jr|dvrd}dx}}|dz}nd}tt
jk(r%td}td}td}	td}
n$td}td}td}	td }
t
jr|d!vrt|||�\}}n�t
jr|d!vrt|||�\}}n]|d"vrt|||�\}}nH|d#vrt|||�\}}n3|d$vrt|�|}}n!|d%vrt||�|}}ntd&|z��|d'k(r|	}
nW|dkr|}
nO|d(vrt|�d)k\r|
}
n:|dvr|t!||z�t|�z}
n|d*vr||t|�z}
n|}
|d$vr|
|j#|�z}n|
|j|�z}|r,|d+k7rt|�dk7r
||	||zz
}|S|tdz
}|S),zColor print one columnr�r�F)r�r�TrryrrKr�r�r�k�M�G�T�P�E�Z�Y)r3)	r3rRrSrTrUrVrWrXrYg @)	�BrRrSrTrUrVrWrXrYr�r�r�r�r�r�r�r�)r3r�r�r�)r3r�r�)r�)ry)rzType %s not known to dstat.r<r�r)r3r�r�r
)rYrr��rjustr�rrrrr<rrIrrKrOr�r�r+�ljust)r�r�r�r�rG�unit�units�colors�ctext�cunit�cdoner�rHrs              r`r�r�+s����D���}����D�����#�c�$�i�.�!8�����	��
��|��a�����>�C�I�I�e�$4�4�t�G�}�D�u�Y�GW�W�W���>�C�I�I�e�$4�4�u�Y�7G�G�G��t�|��g���S�#�s�C��c�3�G��	���U�g�%�=�����u��C�i��=���r�x�x���{�#���i� ���i� ���i� ���{�#���i� ���i� ���i� ��
�z�z�e�3�3��c�5�$�'���Q�	���e�3�3��c�5�$�'���Q�	�/�	!��c�5�$�'���Q�	�&���c�5�$�'���Q�	�&���S��5�Q��	�&���c�5�!�5�Q���5��=�>�>��c�z���	�!����	�3��E�#�J�%�/���
�l�	"��s�3�u�9�~�c�&�k�1�2��	�/�	!��q��V��}�%����
����c�i�i��&�&���c�i�i��&�&�����7�u�S�z�Q���5�5��8�#�#�C��J�
�4��=� �C��Jruc�j�d}|D]O}||j�z
}||dur|tdtdzz
}�4||k7s�:|tdtdzz
}�Q|dz
}|D]O}||j�z
}||dur|tdtdzz
}�4||k7s�:|tdtdzz
}�Q|dzS)	z.Return the header for a set of module countersrr
r�r�r�r�rr�)r�r�r�r�)r�r�r��os    r`rBrB�s���
�D�
�0������	����G�B�K���E�'�N�T�'�]�2�2�D�
��
��E�'�N�T�$�Z�/�/�D�0�	�D�L�D�
�0����
�
�����G�B�K���E�'�N�T�&�\�1�1�D�
��
��E�'�N�T�$�Z�/�/�D�0��$�;�ruc���d}|D])}||j�z}||dus�|tdz}�+|dz
}|D])}||j�z}||dus�|tdz}�+|dzS)z2Return the CVS header for a set of module countersrr
r�r)r�r�r�)r�r�rds   r`�	csvheaderrf�s���
�D�
�&���a�j�j�l�"���G�B�K���$�u�+�%�D�&�	�D�L�D�
�&���a�m�m�o�%���G�B�K���$�u�+�%�D�&��$�;�ruc�:�t|tj��y)zOutput info messager.N)rLr6rQ)�levelr�s  r`�infori�s��
�#�C�J�J�ruc�P�t|tj��t|�y)z#Print error and exit with errorcoder.N)rLr6rQrM)r�r�s  r`�dierk�s��	�#�C�J�J����Iruc���da	ddladdladdlatjday#	t
j
�t
jd�t
jd�fdaYy#YYyxYwxYw)zInitialise terminalr�rN)Nrr5rt)Nr	)�termsize�fcntlr��termios�
TIOCGWINSZ�curses�	setupterm�tigetnumr}rur`�inittermrt�sf���H�
�%�%��������	������O�O�G�$�f�o�o�f�&=�=��H��	��s&�#�A0�>A(�$A0�(A-�*A0�-A0c�P�td�s		tddk(rstjddddd�}tj	t
jj�tj|�}tjd|�ddStddk(r>tj�tjd�tjd�fSttj d�ttj d	�fa	tStS#d
aYtSxYw)z$Return the dynamic terminal geometryrr�HHHHNr	r5rt�LINES�COLUMNS)��P)rmr��packrn�ioctlr6rGrrorp�unpackrqrrrsr+rg�environ)ryrs  r`rmrm�s���
�A�;�	���{�a���K�K���1�a��3���K�K��
�
� 1� 1� 3�W�5G�5G��K���}�}�V�Q�/���3�3��!���!�� � �"����w�/�����1H�H�H���
�
�7� 3�4�c�"�*�*�Y�:O�6P�Q���O�8�O��	��H��O�s�A>D�A	D�8D�D%c�R�tjj�r,	ddl}|j	�|jd�dkry	y	y#t$rtdtj��Yytdtjd�ztj��YyxYw)
z/Return whether the system can use colors or notrNr_Fz<Color support is disabled as python-curses is not installed.r.z@Color support is disabled as curses does not find terminal "%s".rdT)r6rGrHrqrrrsrrLrQrgrl)rqs r`rkrk�s���
�z�z����
	���������x�(�1�,��-�����	��P�WZ�Wa�Wa�b��	��T�WY�W`�W`�ag�Wh�h�or�oy�oy�z��s�(A�$B&�22B&c�R�|ddvrtjj|�S|S)zPerform basename on paths onlyr)rc�.)rgrFrN)rhs r`rNrN�s(���A�w�*���w�w����%�%��Kruc�,�d}	tjd|zd�jd�}t|d�}|dvrt|d�}|j	d�r t|d�}|j	d�r�|s�	|S#t|�}Y|SxYw)	zAReturn the name of a process by taking best guesses and exclusionNz/proc/%s/cmdliner)�r�r)�bash�csh�ksh�perl�python�ruby�shr����)r r!rOrNrX)r/rhr��cmdlines    r`�getnamebypidr��s���
�C���#�#�$6��$<�a�@�F�F�{�S���w�q�z�"���H�H��7�1�:�&�C��>�>�#���7�2�;�'�C��~�~�c�"�E��E�s��J����t�n���J�s�A<B�
Bc���	tjd�S#t$rYnwxYw	ddl}|j	�S#t
tf$rYnwxYw	tdd�j�jd�}|dkDr|Sn#t$rYnwxYw	tjd�}d}td�j�D]}|j|�s�|d	z
}�|dkDr|Sy#t!d
��xYw)z'Return the number of CPUs in the system�SC_NPROCESSORS_ONLNrNz
/proc/cpuinfor�zprocessor	:z^cpu\d+r�rz)Problem finding number of CPUs in system.)rgrqr-�multiprocessing�	cpu_countr�NotImplementedErrorr�r�r:�IOErrorr6r7r�r�rSr�)r�r�searchr�s    r`rnrn	s��
��z�z�/�0�0���
��
�����(�(�*�*���,�-�����
��_�c�*�/�/�1�7�7��G���1�9��L����
��
��	E����I�&�����,�'�1�1�3�	�D��|�|�D�!���
��	��1�9��L���E��C�D�D�s@��	#�#�;�A
�A
�/B�	B�
B�AC&�
C&�&
C3c��tjd�D�cgc]1}tjj|�j	dd���3c}Scc}w)Nz/sys/block/*�!rc)�globrgrFrNr�r�s r`rTrT)	s<��IM���Sa�Ib�c�X�B�G�G���X�&�.�.�s�C�8�c�c��cs�6Ac�V�tjd|�}|rJ|j�}t|d�dzt|d�z}dt	td�|z�zStjd|�}|r|j�}|dStjd	|�}|ry
|S)z,Convert sysfs device names into device namesz,ide/host(\d)/bus(\d)/target(\d)/lun(\d)/discrr	r��hd�azcciss/(c\dd\d)r�placeholder�sdX)r6rSr~r+�chr�ord)�devicer�r��nrs    r`rYrY.	s���
���?��H�A��
�H�H�J����1��Y��]�S��1��Y�
&���c�#�c�(�R�-�(�(�(�
���!�6�*�A��
�H�H�J����t��
�����'�A����Mruc���dg}gd�}dg}gd�}dg}gd�}dg}dg}	d	g}
||vrBttd
�|j|�dzz|dzz�}|dz}|sd|zSd
||fzS||vrBttd
�|j|�dzz|dzz�}|dz}|sd|zSd||fzS||
vrd|zS||vrd|zS||vrd|zS||vrd|zS||	vr-|	j|�dz|dzz}|dz}|sd|zSd||fzS||vr,|j|�}
|dz}|dz}|sd|
|fzSd|
||fzS||vr-|j|�dz|dzz}|dz}|sd|zSd||fzSd||fzS)z+Convert major/minor pairs into device namesr)
r���!r��8�9�X�Y�Z�[r)r�A�B�C�D�E�F�G��������r�)�H�I�J�K�L�M�N�O�b�h�r�rqzsd%szsd%s%dr	�@zhd%szhd%s%dzdm-%dzmd%dzloop%dzram%dzc0d%dzc0d%dp%dzida%d-%dzida%d-%d-%dzubd%dzubd%d-%dzdev%d-%d)r�r��index)�maj�min�ram�ide�loop�scsi�md�ida�ubd�cciss�dm�disc�part�conts              r`rr@	s���%�C�
1�C�
�5�D�R�D�
��B�
*�C�
�%�C�
�F�E��&�B�
�d�{��3�s�8�d�j�j��o��2�2�S�2�X�=�>���R�x���F�T�M�)��4��,�&�&�	����3�s�8�c�i�i��n�q�0�0�3��8�;�<���R�x���F�T�M�)��4��,�&�&�	�����}��	�����|��	����#�~��	�����}��	����{�{�3��"�$�s�R�x�/���R�x���G�d�N�*��T�4�L�(�(�	����y�y��~���R�x���R�x���J�$���5�5���d�D�1�1�1�	����y�y��~��"�S�2�X�-���R�x���G�d�N�*��T�4�L�(�(��S�#�J�&�&ruc��g}tjd�}t�D]U}|jd�s�|j	|j|�j
�djdd���Wtjd�}tD]`}tj|dz�D]C}|j	|j|�j
�djdd���E�b|j�|S)Nzdstat_(.+)$�dstat_rr�r��.+/dstat_(.+).py$�/dstat_*.py)r6r7r�rXrNrSr~r��
pluginpathr�rT)rF�remodr�rFs    r`rErE�	s����G��J�J�}�%�E��I�P�����x�(��N�N�5�;�;�x�0�7�7�9�!�<�D�D�S�#�N�O�P�
�J�J�*�+�E��P���	�	�$��"6�7�	P�H��N�N�5�;�;�x�0�7�7�9�!�<�D�D�S�#�N�O�	P�P��L�L�N��Nruc�P�t�\}}tdd��tjd�}g}t	�D]U}|jd�s�|j
|j|�j�djdd���W|j�|d	z
}|D]L}|t|�z
d
z
}|dkrtdd��|t|�z
dz
}||d
k7s�@t|d���Nt�tjd�}tD�]}g}tj|dz�D]C}|j
|j|�j�djdd���E|s�g|j�|d	z
}tdtjj!|�zd��|D]K}|t|�z
d
z
}|dkrtd��|t|�z
dz
}||d
k7s�?t|d���Mt|���y)Nzinternal:
	r��endz^dstat_(.+)$r�rr�r�rr	z
	rvr
r'r�r�z%s:)rmrLr6r7r�rXrNrSr~r�rTrYr�r�rgrF�abspath)rsrtr�rFr��cols2�modrFs        r`rVrV�	s�����J�D�$�	�/�r�"��J�J�~�&�E��G��I�P�����x�(��N�N�5�;�;�x�0�7�7�9�!�<�D�D�S�#�N�O�P��L�L�N��1�H�E�� ����C�� �1�$���A�:��&�b�!��3�s�8�O�b�(�E��'�"�+���#�3��
 �
�#�J��J�J�*�+�E�������	�	�$��"6�7�	P�H��N�N�5�;�;�x�0�7�7�9�!�<�D�D�S�#�N�O�	P��������q���
�e�b�g�g�o�o�d�+�+��8��	$�C��C��H�$�q�(�E���z��&�!��s�3�x��"�,���g�b�k�!��c�s�#�
	$�	�c�
�ruc���tjjtd�tjj	�t
jrPtjjt
j�r#tjt
j�t
jr�tjjt
j�rTt�\}}ddl
}|jt
j�}|jd�j!|dz
�n+t
jrt#dtj$��tj&|�y)Nr�r�
cumulativer;z=No profiling data was found, maybe profiler was interrupted ?r.)r6rGr�r��flushrrrDrgrFrGrUr#rm�pstats�Stats�
sort_stats�print_statsrLrQrM)r�rsrtr�r�s     r`rMrM�	s����J�J���T�'�]�#��J�J����	�z�z�b�g�g�n�n�R�Z�Z�0�
�	�	�"�*�*��	�z�z�b�g�g�n�n�R�Z�Z�0� �]�
��d���L�L����$��	
���\�"�.�.�t�b�y�9�

���
�M�TW�T^�T^�_��H�H�S�Mruc��t�atjd�a	t
jdzdzattj��a
tj�a
d}tj�}tj �d}t
j"j%�r�tj&d�}tj&d�}|dk(r�|r�t)j*d�j-|�r�t
j"j/d	|�d
|j1d�d�d
tj2j5t
j6d��ddj9t:j<��d�	�t:j>dk(rtA�t:_t:jB�rwtj2jEt:jB�sdtGt:jBd�a$tHj/dtJz�d}tHj/tLdj9|��n/tGt:jBd�a$tHj/d�dd|zddddd|zf}tHj/tLdj9|��dddj9t:j<�zdddddtOjPdtOjR��zf}tHj/tLdj9|��t:jTrW	tGt:jTd�}|j/ttj���|jW�t:j>s^t>D]}dt>|<�
t^D]}dt^|<�
t`D]}dt`|<�
t`d$ft^d%<t`d$ft^d&<t
j"j/t`d'�t:jbst:jd}d}	ga3t:jhD�]}
|
d(k(rd)}n#|
d*k(rd+}n|
d,k(rd-}n|
d.k(rd/}n|
d0k(rd1}n|
f}|D�]�}d2|jkd3d4�z}
	|
tm�vr�ddl7}|jq|
tr�\}}}|jW�|dd5vratutG|�jw��tud6�|
tx_=txj}�txj�n�|dd7k(r;tud8|
�d9|
�d:��txj}�txj�nUt[d;|
zt
j\�"�n6tud<|
z�txj}�txj�|	txj��zdz}	tfj�tx�t:j�rHt[dD|
zd�E�t�txdF�rt[dGtxj�zd�E�t[�����tfst�dHdI�t:jBr"tHj/t�tf��t�j�tNjNtNj��}tOjN�aJda1daKtbt:jdt:j�dz
zkst:j�d=k(r�|j�t�tbzdt�tbf�|j��t
j"j��tb|za1t�j��tbt:jdt:j�dz
zkr��t:j�d=k(r��t:jbr t
j"j/dJ�yy#td�aY��xYw#tX$rE}t[d t:jT�d!|��t
j\�"�d#t:_*Yd}~���d}~wwxYw#tX$r|}||d=k(r#t[d>|
�d?|�d@�t
j\�"�n2t:j�r"t[d>|
�dA|�d@�t
j\�"�t:j�dBk\r�Yd}~��zd}~wt[dC|
zt
j\�"�Y��LxYw)Kz<Initialization of the program, terminal, internal structuresrerr	�inf�XTERM_SHELLrdz	/bin/bashz(screen*|xterm*)z]0;(�@r�rz) r��N�wz"Dstat %s CSV output"
)z'"Author:","Dag Wieers <dag@wieers.com>"rrrz"URL:"z)"http://dag.wieers.com/home-made/dstat/"
r�r�z

z"Host:"z"%s"rz"User:"z"%s"
z
"Cmdline:"z
"dstat %s"z"Date:"z%d %b %Y %H:%M:%S %ZzFailed to create pidfile z: r.Frr�r�r�r&)r&�cpu24r()r(�disk24z
disk24-oldr+)r+�int24r*)r*�page24r3)r3zswap-oldr�r�r�)z.pyz5global plug; plug = dstat_plugin(); del(dstat_plugin)z.sozimport z; global plug; plug = z.new()zModule %s is of unknown type.zglobal plug; plug = %s()r
zModule z failed to load. (�)z" failed to load, trying another. (r�z"Module %s caused unknown exceptionz	Module %sr�r/z requires %srz-None of the stats you selected are available.r)Srnrrgrq�hzr6rrrr+�ownpidrorpr�getpass�getuserrjrGrHrlr6r7rSr�rOrFrN�argvrPrrr8rrkrCrGr��
outputfilerfr�r4r{r|rDrgr�rLrQr�r�rAr<r�rFr�r��imp�find_moduler��execr��plugr�r�r�rr�rNr�r/rkrf�sched�	scheduler�sleep�inittime�missedr:�enterabs�performr(r�r �
clearcache)�interval�user�hostnamer��termrBrD�e�key�	linewidth�pluginrr��
pluginfiler��fp�pathname�descriptionr�s                   r`�mainr�	s���
�J�E�	���L�	!�B���*�*�q�.�A�%�������
�F��#�#�%�H��H��?�?��D��x�x�z�!�}�H��z�z�����	�	�-�(���y�y�� ���K��D�R�Z�Z�8J�-K�-Q�-Q�RV�-W��J�J���4����PS�AT�UV�AW�Y[�Y`�Y`�Yi�Yi�jm�jr�jr�st�ju�Yv�x{�yA�yA�BD�BI�BI�yJ�K�
L�
�x�x�4���>���
�y�y��w�w�~�~�b�i�i�(��b�i�i��-�J����6��@�A��F����T�%�[�-�-�f�5�6��b�i�i��-�J����V�$��F�X�-�b��B�y��D��Q������e��)�)�&�1�2��|�c�h�h�r�w�w�.?�?��2�b��S[�^b�^k�^k�mC�EI�ES�ES�EU�_V�TV�W������e��)�)�&�1�2�
�z�z�	��2�:�:�s�+�G��M�M�#�b�i�i�k�*�+��M�M�O��8�8��	�C��E�#�J�	��	�C��E�#�J�	��	�C��D��I�	�"�9�o�/��k��"�9�o�/��k���J�J���T�,�'�(�
�9�9��8�8���I��G��*�*�@���U�?�$6�T�
�v�
�&H�t�
�u�_�&8�t�
�v�
�&:�t�
�v�
�&<�t��[�d��6	�C�!�C�K�K��S�$9�9�J�*
Z��W�Y�.��03���
�J�0W�-�B��+��H�H�J�#�1�~��2��T�(�^�0�0�2�3��T�U�(2��
��
�
������%�Q��5�0��*�V`�a�b��
�
������
�=�
�J�QT�Q[�Q[�\��3�j�@�A��J�J�L��L�L�N�"�D�N�N�$4�4�q�8�I��N�N�4� ��x�x��k�J�.�B�7��4��(��.�4�9�9�4�"�=����m6	�@�D��A�>�?�	�y�y�����7�+�,�����	�	�4�:�:�6�I��y�y�{�H�
�F�
�F��B�H�H�����
�+�
+�r�x�x�2�~����8�f�,�a��6�)�D��
�
���
�
�����(�"������
�B�H�H�����
�+�
+�r�x�x�2�~�
�y�y��
�
�������O��u����j�	��r�z�z�1�E�C�J�J�W��B�J�J��	��J�
��$�r�(�?��j�!�L�SV�S]�S]�^��X�X��j�Z[�\�cf�cm�cm�n��8�8�q�=����
Z��:�Z�G�c�j�j�Y�Y�s>�`5�Aa�9D:b�5
a�	b�:b�b�	d?�"A1d�#d?c���tj�a|dz
tjztjza|dz
tjzdzatjsd}nt
dk(s	tdk(rdad}tdk7rttz
|z
dkDr
tdza	ytdk(rt�ad\aa
gagadant
at"j$j'��r	t}t+�\aa
|tk7r^gat,D]S}||j/�zdz}|tkstt,ddk(s�3|tks�=tj1|�|}�Utj2rttdk\rk	tttk7rdanTtj4sttd	z
zdk(rdan.tj4rt
dk(rttdz
zdk(rdatant,at
tjk(rt6d
t8d<nt8dt8d<d
}tj4rAt
dk(r&|dk7r!dt6d
zt6dzt6dz}ntdk7r	t6d}	t t rftdk(r(t,tk7rt;dt"j<��dat"j$j?|�t3t,t�}|}d
}t,D]�}	|jA�|tvr.||jG�z|jIt,t�z}tjJs�[t
tjk(s�s||jM�z|jOt,t�z}��t"j$j?|t8dz�tjJr/t
tjk(rtPj?|dz�tj�rUttj�tz
dzzatdk(r
tt
zatjdk(r?t"j$j?dt8dtt
zt8dfz�n�tjd	k(rQt"j$j?dt8dtt
zt8dtt
t8dfz�ndtjd	kDrQt"j$j?dt8dtt
zt8dtt
|t8dfz�tdkDrNt"j$j?dt8dzdztStdz�zd zt8dz�da	tj4s t"j$j?d�yy#t($r	d\}a
Y��wxYw#t($rgaY���wxYw#t($rdaY���wxYw#tB$r,}t;d|jD�t;|�Yd}~��Nd}~wwxYw)!z9Inner loop that calculates counters and constructs outputrrrr^TNr
rr	r�rr�rrr�r�r�z*Terminal width too small, trimming output.r.Fz
* Exception in pluginr�g@�@z%s%6.2fms%sr�z%s%6.2f %s%d:%d%srz%s%6.2f %s%d:%d:%d%sr�rKzmissed z ticks)*r4r�rrr<r�rr�	totaltimer�rr�rbrsrtr��
oldvislist�
showheaderr6rGrH�	NameErrorrmr�r�rNrBrAr�r�rLrQr�r�r�rhr�r�rCr�r�r�r)	rA�curwidth�oldcolsrd�newwidth�newliner��oline�errs	         r`rr�
sD���I�I�K�	���
�R�X�X�%����1���!��r�x�x�'�1�,���x�x��H��q�y�D�A�I��	��H��1�9��X�-��6��:��a�Z�F���1�9��g�G��J�D�$��G��J��J��G��:�:����
%���%��J�D�$��$���� �,�A�'�!�+�+�-�7�!�;�H��4�'�W�����-D��TX�����q�)�#+��	,��y�y�T�Q�Y�$����(�!%�J����t�t�a�x�'8�A�'=�!%�J��Y�Y�4�1�9�����1B�a�1G�!%�J� �J��G��2�8�8��#�G�}�E�)��$�Y�/�E�)����
�9�9��q�y�V�q�[���g��.��k�1B�B�T�&�\�Q������y�/��	����q�y�W��/��B����T��J��J�J���W�%��W�g�.�G������
	M�A�
��	�	��
�G�|��a�f�f�h�����7�G�)D�D���y�y�T�R�X�X�-���	�	��+�a�l�l�7�G�.L�L��
	M�	�
�
�����g��.�/�
�9�9�����)����U�T�\�*��8�8�!�T�Y�Y�[�9�%<��$F�F�I��q�y�%��,�	��x�x�1�}��
�
� � ��%��2D�i�RV�FV�X]�^e�Xf�1g�!g�h����Q���
�
� � �!4��k�8J�I�X\�L\�^c�dk�^l�nr�tx�z�AH�{I�8J�"J�K����A���
�
� � �!7�5��;M�y�[_�O_�af�gn�ao�qu�w{�~D�FK�LS�FT�;U�"U�V��A�:��J�J���S�5��>�1�I�=��F�1�H�
�M�PX�X�[`�ah�[i�i�j��F��y�y��J�J���T�"���E�
%� $�
���
%��$!�$�!#�J�$��>�	��J�	�� �
��/����8��c�
�
��
�sN�)W5�=X
�X�X.�5X�X�
X�X�X+�*X+�.	Y#�7!Y�Y#�__main__�
DSTAT_OPTSrzmain()r)g����MbP?r�)r�rr�)}�
__future__rrrrr��
__metaclass__�collections.abcr�rhrJr�r�r rgr6ror�r�r6r4rfr��version_inforMrF�
expanduserr�rJr�r�rrr�r�rr"r(r/rlryr�r�r�r�r�r�r�r�r�r�rrr!r%r0r7rErOrVr]rvrr�r�r�r�rr�r�r�r�rLr�r�r	rrrrrrr"r%r'r)r0r@rDrIrKrOr�r�rBrfrirkrtrmrkrNr�rnrTrYrrErVrrrzrlrOrrr#rGrUr(�KeyboardInterruptrrArGr�rr}rur`�<module>r$s��&M�L��
���
����	�	���
�
��
��
�R������f���C�H�H�
2�3��G�G���{�#��G�G�O�O�B�G�G�O�O�C�H�H�Q�K�0�1�K�?���	�
�C�C�L}�}�~(��(�=(��=(�~(�I�(�8(�I�(�68(�%�8(�tT(��T(�lR(�5�R(�jL(�u�L(�\&�%�&�7�u�7�$B(��B(�HF(�%�F(�PA(�u�A(�F
O��
O�-��-�"9��9�&`��`�(#�I�#�:(��:(�x(��(�*(�5�(�.$��$�>$��$�$~�5�~�"1v��1v�fL�U�L�"(��(�.Q��Q�.V��V�&<��<� @��@�&(�u�(�6"�8�"��%��:	��\�	�
�|�	���	��,�		�
��	��<�
	���	��L�	���	�
�<�	��\�	�
�l�	��L�	��|�	� �L�!	�"�\�#	�&�z�'	�(�������5	��:��[��
�I���y����	��Y�
�����H���x������7���	���)�� 	�)�!�"�I�#�$�Y�%�&�I�'�*�{�+��2
�
�

�
�����	��,�\/����
���"�$&�
�
�
��*�
5�� ����4	��U�n�(�  �
�
�.�(�$��$"E�Hd�
�$.'�T�"�H�.s�jJ#�Z�z��
#��
�
�Y�R�Y�Y�|�B�/�5�5�7�#�(�(�1�2�,�F�
G�����
�:�:���w�w�~�~�b�j�j�)���	�	�"�*�*�%��G�K�K��"�*�*�-��F�	��G�	���B��D��
�#�
�9�9��J�J���T�"���#�s�CP>�>Q8�+Q3�3Q8

Youez - 2016 - github.com/yon3zu
LinuXploit