OwlCyberSecurity - MANAGER
Edit File: _pslinux.cpython-311.pyc
� �������h�@�������������� �������� ����d�Z�ddlmZ�ddlZddlZddlZddlZddlZddlZddl Z ddl Z ddlZddlZddl Z ddlZddlmZ�ddlmZ�ddlmZ�ddlmZ�dd lmZ�dd lmZ�ddlmZ�ddlmZ�dd lmZ�ddlmZ�ddlmZ�ddlmZ�ddlmZ�ddlmZ�ddlm Z �ddlm!Z!�ddlm"Z"�ddlm#Z#�ddlm$Z$�ddlm%Z%�ddlm&Z&�ddlm'Z'�ddlm(Z(�ddlm)Z)�ddl*m+Z+�ddl*m,Z,�ddl*m-Z-�dd l*m.Z.�dd!l*m/Z/�dd"l*m0Z0�ej1��������d#k����rddl2Z2ndZ2g�d$�Z3d%Z4ej5���������6��������������������d&�ej7����������������������z��������������Z8�e9ed'������������Z:�e9ed(������������Z;�e<��������������Z=�ej>��������d)������������Z?�ej@����������������������ZAdaBe0rd*nd+ZCejD��������d,k����ZEd-ZFe2�e jG��������ZHn(�e2jI��������d.d/�eJe jG��������������������i������������ZKeKjH��������ZHe2� dZLdZMd0ZNd1ZOn5�G�d2��d3e2jI��������������������ZP�eQ���������������R��������������������ePjS���������������������ejT��������ejU��������ejV��������ejW��������ejX��������ejY��������ejZ��������ejZ��������ej[��������ej\��������ej]��������ej^��������d4�Z_ej`��������eja��������ejb��������ejc��������ejd��������eje��������ejf��������ejg��������ejh��������eji��������ejj��������d5�Zk�ed6g�d7�������������Zl�ed8g�d9�������������Zm�ed:g�d;�������������Zn�ed<d=������������Zo�ed>eojp��������d?z���������������Zq�ed@g�dA�������������Zr�edBdCdD�s��������������������erjp��������������������z���������������Zt�edEg�dF�������������Zu�edGg�dH�������������ZvdI��ZwdJ��ZxdK��ZyedL����������������Zze=dMfdN�Z{ ��ezdO�������������n1#�e|$�r)��e j}�������������������������edPdQ������������dRdRdR������������a~Y�nw�xY�wdZ �ddSl�mZ�n1#�e�$�r)�ddl�Z��e�j���������ddM�T������������Z��e9e�dU������������rd|dV�ZY�nw�xY�we�(e3����������������������dW���e�e������������D����������������������������dX��Z�dY��Z�dZ��Z�d[��Z�d\��Z�d]��Z�d^��Z�d_��Z�ej5���������6��������������������d`������������sej5���������6��������������������da������������rdb��Z�n!ej5���������6��������������������dc������������rdd��Z�nde��Z�ej���������Z��G�df��dge|������������Z��G�dh��di������������Z��e���������������Z�d}dk�Z�dl��Z�dm��Z�ej���������Z�d~do�Z�d~dp�Z�dq��Z�dr��Z�ds��Z�dt��Z�du��Z�dv��Z�dw��Z�dx��Z�dy��Z��G�dz��d{e<������������Z�dS�)zLinux platform implementation.�����)�divisionN)�defaultdict)� namedtuple����)�_common)�_psposix)� _psutil_linux)� _psutil_posix)�AccessDenied)�debug)�decode)�get_procfs_path)� isfile_strict)�memoize)�memoize_when_activated)�NIC_DUPLEX_FULL)�NIC_DUPLEX_HALF)�NIC_DUPLEX_UNKNOWN)� NoSuchProcess)�open_binary)� open_text)�parse_environ_block)�path_exists_strict)� supports_ipv6)� usage_percent)� ZombieProcess)�b)� basestring)�FileNotFoundError)�PermissionError)�ProcessLookupError)�PY3)��������)�PROCFS_PATH�IOPRIO_CLASS_NONE�IOPRIO_CLASS_RT�IOPRIO_CLASS_BE�IOPRIO_CLASS_IDLE�CONN_ESTABLISHED� CONN_SYN_SENT� CONN_SYN_RECV�CONN_FIN_WAIT1�CONN_FIN_WAIT2�CONN_TIME_WAIT� CONN_CLOSE�CONN_CLOSE_WAIT� CONN_LAST_ACK�CONN_LISTEN�CONN_CLOSINGz/sys/class/power_supplyz/proc/%s/smaps�proc_ioprio_get�proc_cpu_affinity_get� SC_CLK_TCK���i� ���littlei���� AddressFamily�AF_LINK����r#���c�������������������������e�Zd�ZdZdZdZdZdS�)� IOPriorityr���r���r<���r#���N)�__name__� __module__�__qualname__r&���r'���r(���r)�����������F/opt/imunify360/venv/lib64/python3.11/site-packages/psutil/_pslinux.pyr>���r>���w���s&�����������������������rC���r>���)�R�S�D�T�t�Z�X�x�K�W�I�P)�01�02�03�04�05�06�07�08�09�0A�0B�svmem)�total� available�percent�used�free�active�inactive�buffers�cached�shared�slab�sdiskio) � read_count�write_count� read_bytes�write_bytes� read_time� write_time�read_merged_count�write_merged_count� busy_time� popenfile)�path�fd�position�mode�flags�pmemz"rss vms shared text lib data dirty�pfullmem)�uss�pss�swap� pmmap_grouped)rs����rss�sizer{����shared_clean�shared_dirty� private_clean� private_dirty� referenced� anonymousr|���� pmmap_extzaddr perms � �pio)ri���rj���rk���rl���� read_chars�write_chars� pcputimes)�user�system� children_user�children_system�iowaitc�����������������������t����������|�t����������������������s J�|����������������t����������j��������|�������������}�|����������������������d������������d���������}�|����������������������d������������rt ����������|�������������s |�dd����������}�|�S�)zWrapper around os.readlink().��r���� (deleted)N���)� isinstancer����os�readlink�split�endswithr���)rs���s��� rD���r����r��������s�������d�J�'�'�-�-��-�-�'� �;�t���D���:�:�f���a� �D���}�}�\�"�"���+=�d�+C�+C����D�S�D�z���KrC���c������������������(����t�����������j��������dt�����������j��������dt�����������j��������di}||�t�����������j��������t�����������j��������z��t�����������j��������z��z�����������}|�t�����������j��������z��r|���������������������ddd������������}|���������������������dd������������}|S�)zZConvert file's open() flags into a readable string. Used by Process.open_files(). �r�wzw+�ar���zr+)r�����O_RDONLY�O_WRONLY�O_RDWR�O_APPEND�replace)rw���� modes_maprv���s��� rD����file_flags_to_moder��������sw���������c�2�;��R�Y��E�I��U�b�k�B�K�7�"�)�C�D�E�D��r�{���)��|�|�C��a�(�(���<�<��d�#�#�D��KrC���c�����������������������|�����������������������dd������������}�d}|rd|�z��}nd|�z��}t����������j��������|t����������j��������������������S�)z�Return True if the given name refers to a root device (e.g. "sda", "nvme0n1") as opposed to a logical partition (e.g. "sda1", "nvme0n1p1"). If name is a virtual device (e.g. "loop1", "ram") return True. �/�!Tz /sys/block/%sz/sys/block/%s/device)r����r�����access�F_OK)�name�including_virtualrs���s��� rD����is_storage_devicer��������sO��������<�<��S�!�!�D�����-���%���%��,�� �9�T�2�7�#�#�#rC���c����������������������t����������d|�z��������������5�}|����������������������������������������������������������������������dd����������}ddd�������������n#�1�swxY�w�Y���g�d�}t����������|������������}|dk����r|���������������������d�������������|dk����r|���������������������d�������������|d k����r|���������������������d �������������t����������d|������������adS�)z�Set a namedtuple of variable fields depending on the CPU times available on this Linux kernel version which may be: (user, nice, system, idle, iowait, irq, softirq, [steal, [guest, [guest_nice]]]) Used by cpu_times() function. �%s/statr���N)r�����nicer�����idler�����irq�softirq�����steal� ����guest� ���� guest_nice� scputimes)r����readliner�����len�appendr���r����)�procfs_path�f�values�fields�vlens��� rD����set_scputimes_ntupler������s������ �Y��,� -� -��*�������#�#�%�%�a�b�b�)��*��*��*��*��*��*��*��*��*��*��*�����*��*��*��*� K� K� K�F��v�;�;�D��q�y�y�� � �g�����q�y�y�� � �g�����r�z�z�� � �l�#�#�#��;��/�/�I�I�Is����/A�A�ATc������������������ ���� �|rt����������|�������������nt����������|�������������5�}|����������������������������������������������������������������������cddd�������������S�#�1�swxY�w�Y���dS�#�t����������t ����������f$�r�|t����������ur|cY�S���w�xY�w)z�Return file content. fallback: the value returned in case the file does not exist or cannot be read binary: whether to open the file in binary or text mode. N)r���r����read�strip�IOError�OSError�_DEFAULT)�fname�fallback�binaryr����s��� rD����catr������s��������#)� ?�[�� � � �y��/?�/?�� $�1��6�6�8�8�>�>�#�#� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�� $����� $�� $�� $�� $�� $�� $���W���������8�#�#��O�O�O�� ���s4���� A"��&A�A"��A�A"��A�A"��"B��B�/procr����zuser system idle���������)�prlimit)� use_errnor����c�����������������������G�d��dt�����������j��������������������}�|��������������}|�0t�������������������������������|�|d�t����������j��������|������������������������}ne�|��������������}|d���������|_��������|d���������|_��������t�������������������������������|�|t����������j��������|������������t����������j��������|������������������������}|dk����r5t����������j����������������������}t����������|t����������j ��������|�������������������������|j��������|j��������fS�)Nc��������������������2�����e�Zd�Zdej��������fdej��������fgZdS�)�prlimit.<locals>.StructRlimit�rlim_cur�rlim_maxN)r?���r@���rA����ctypes� c_longlong�_fields_rB���rC���rD����StructRlimitr����J��s+��������������'��):�;�'��):�;�=���rC���r����r���r���)r����� Structure�libcr�����byrefr����r����� get_errnor����r�����strerror)�pid� resource_�limitsr�����current�ret�new�errnos��� rD���r����r����I��s������� =�� =�� =�� =�� =�v�/�� =�� =�� =��#�l�n�n�G��~��l�l�3� �4���g�9N�9N�O�O����#�l�n�n��%�a�y���%�a�y����l�l���F�L��$5�$5�v�|�G�7L�7L�N��N����a�x�x��(�*�*���e�R�[��%7�%7�8�8�8��$�g�&6�7�7rC���c������������������d�����g�|�]-}|����������������������d��������������|������������������������������������+|��.S�)�RLIM)� startswith�isupper��.0rL���s��� rD���� <listcomp>r����b��s6������F�F�F�q����f�!5�!5�F�!�)�)�+�+�F��F�F�FrC���c����������������������|�d���������}||�����������������������dd������������z���} �|�d���������}|�d���������}|�d���������}n#�t����������$�r�|cY�S�w�xY�w �t����������dt������������������������z��������������}n#�t����������$�r�|cY�S�w�xY�wd}|5��|D�]U}|�����������������������������������}|���������������������d������������r*|t����������|�����������������������������������d ���������������������z ��}�V �d d d �������������n#�1�swxY�w�Y���|t����������z��}||z ��} ||z���} | t����������| dz��|������������z��} | | z ��} | |t����������|dz��|������������z ��z ��} t����������| ������������S�) a���Fallback for kernels < 3.14 where /proc/meminfo does not provide "MemAvailable:" column, see: https://blog.famzah.net/2014/09/24/ This code reimplements the algorithm outlined here: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 XXX: on recent kernels this calculation differs by ~1.5% than "MemAvailable:" as it's calculated slightly differently, see: https://gitlab.com/procps-ng/procps/issues/42 https://github.com/famzah/linux-memavailable-procfs/issues/2 It is still way more realistic than doing (free + cached) though. ����MemFree:����Cached:r���s ���Active(file):s���Inactive(file):� ���SReclaimable:z%s/zoneinfos���lowr���Nr<���g�������@)�get�KeyErrorr���r���r����r����r�����intr�����PAGESIZE�min)�memsra���r�����lru_active_file�lru_inactive_file�slab_reclaimabler����� watermark_low�line�avail� pagecaches��� rD����calculate_avail_vmemr����j��s������.����D��d�h�h�z�1�-�-�-�H���/�0�� �!3�4��� 0�1��������������������� ��(9�(9�9�:�:���������������������M� ��6��6��� 6�� 6�D��:�:�<�<�D����v�&�&�� 6���T�Z�Z�\�\�!�_�!5�!5�5� �� 6�6��6��6��6��6��6��6��6��6��6��6�����6��6��6��6� ��X��M��=� �E��"3�3�I� ��Y��]�M�2�2�2�I� �Y��E� � ��$4�s�$:�M� J� J� J�J�E��u�:�:�s4����<��A� A�A.��.A=�<A=�AC*�*C.�1C.c������������ �����������g�}�i�}t����������dt������������������������z��������������5�}|D�]7}|�����������������������������������}t����������|d���������������������dz��||d���������<����8 �ddd�������������n#�1�swxY�w�Y���|d���������}|d���������} �|d���������}n'#�t����������$�r�d}|����������������������d �������������Y�nw�xY�w �|d ���������}||���������������������dd������������z ��}n'#�t����������$�r�d}|����������������������d�������������Y�nw�xY�w �|d ���������} nA#�t����������$�r4� �|d���������} n'#�t����������$�r�d} |����������������������d�������������Y�nw�xY�wY�nw�xY�w �|d���������} n'#�t����������$�r�d} |����������������������d�������������Y�nw�xY�w �|d���������}nS#�t����������$�rF� �|d���������|d���������z���|d���������z���}n'#�t����������$�r�d}|����������������������d�������������Y�nw�xY�wY�nw�xY�w �|d���������}n#�t����������$�r�d}Y�nw�xY�w||z ��|z ��|z ��} | dk�����r||z ��} �|d���������}n#�t����������$�r�t����������|������������}Y�nw�xY�w|dk�����rd}|����������������������d�������������||k����r|}t����������||z ��|d�������������}|�rJd� ��������������������|��������������dt����������|�������������dk����rdnd�d�}t����������j��������|t�����������������������t����������|||| || |||| |������������S�) a���Report virtual memory stats. This implementation matches "free" and "vmstat -s" cmdline utility values and procps-ng-3.3.12 source was used as a reference (2016-09-18): https://gitlab.com/procps-ng/procps/blob/ 24fd2605c51fccc375ab0287cec33aa767f06718/proc/sysinfo.c For reference, procps-ng-3.3.10 is the version available on Ubuntu 16.04. Note about "available" memory: up until psutil 4.3 it was calculated as "avail = (free + buffers + cached)". Now "MemAvailable:" column (kernel 3.14) from /proc/meminfo is used as it's more accurate. That matches "available" column in newer versions of "free". � %s/meminfor�������r���Ns ���MemTotal:r����s���Buffers:rd���r����r����re���s���Shmem:s ���MemShared:rf���s���Active:rb���s ���Inactive:s���Inact_dirty:s���Inact_clean:s���Inact_laundry:rc���s���Slab:s ���MemAvailable:r^�����round_�, z) memory stats couldn't be determined and �was�werez set to 0)r���r���r����r����r����r����r����r����r����joinr�����warnings�warn�RuntimeWarningr\���)�missing_fieldsr����r����r����r����r]���ra���rd���re���rf���rb���rc���rg���r`���r����r_����msgs��� rD����virtual_memoryr �����sI����� ��N� �D� �\�O�$5�$5�5� 6� 6��4�!��� 4�� 4�D��Z�Z�\�\�F�!�&��)�n�n�t�3�D����O�O� 4�4��4��4��4��4��4��4��4��4��4��4�����4��4��4��4�� ���E����D�)��{�#������)��)��)������i�(�(�(�(�(�)����0��j�!��� �$�(�(�+�Q�/�/�/�������(��(��(������h�'�'�'�'�'�(����,��i�������,��,��,� ,��-�(�F�F���� ,�� ,�� ,��F��!�!�(�+�+�+�+�+� ,������,����(��j�!������(��(��(������h�'�'�'�'�'�(���� .���%������.��.��.� .��_�%��_�%�&��&�'�(�� �H����� .�� .�� .��H��!�!�*�-�-�-�-�-� .������ .������H�~���������������������4�<�&� �7�*�D��a�x�x���t�|��+��%�&������+��+��+�$�T�*�*����+����� �q�y�y������k�*�*�*�� �u�}�}����U�U�]�U�1�=�=�=�G����+��I�I�n�%�%�%�%���(�(�A�-�-�E�E�6�9�9�;��� � �c�>�*�*�*����w��d���7�F�F�D�B��B��Bs�����;A+�+A/�2A/�B��!B4�3B4�8C��!C>�=C>�D�� E �D�E �!E��E �E�E �E � E��!E:�9E:�>F�� G�F-�,G�-!G�G�G�G�G�G$��$G3�2G3� H��H2�1H2c�������������������D����i�}�t����������dt������������������������z��������������5�}|D�]7}|�����������������������������������}t����������|d���������������������dz��|�|d���������<����8 �ddd�������������n#�1�swxY�w�Y��� �|�d���������}|�d���������}n5#�t����������$�r(�t����������j����������������������\��}}}}}}}||z��}||z��}Y�nw�xY�w||z ��}t����������||d�������������} �t����������d t������������������������z��������������}|5��dx} }|D�]�}|���������������������d ������������r/t����������|���������������������d������������d���������������������dz��dz��} nC|���������������������d ������������r.t����������|���������������������d������������d���������������������dz��dz��}| �|��n!��d}t����������j ��������|t�����������������������dx} }ddd�������������n#�1�swxY�w�Y���nG#�t����������$�r:} dt����������| ������������z��}t����������j ��������|t�����������������������dx} }Y�d} ~ nd} ~ ww�xY�wt����������j��������|||| | |������������S�)zReturn swap memory metrics.r���r���r��r���Ns ���SwapTotal:s ���SwapFree:r��z %s/vmstats���pswpin���� r$���s���pswpoutzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0zP'sin' and 'sout' swap memory stats couldn't be determined and were set to 0 (%s))r���r���r����r����r�����cext� linux_sysinfor���r����r��r ��r ��r�����strr����sswap)r����r����r����r����r]���ra����_�unit_multiplierr`���r_����sin�soutr���errs��� rD����swap_memoryr����s������ �D� �\�O�$5�$5�5� 6� 6��4�!��� 4�� 4�D��Z�Z�\�\�F�!�&��)�n�n�t�3�D����O�O� 4�4��4��4��4��4��4��4��4��4��4��4�����4��4��4��4� ��]�#���L�!������ �� �� �37�3E�3G�3G�0��1�a��E�4�� �� �������� ���� ��4�<�D��D�%��2�2�2�G����o�&7�&7�7�8�8����� �� ���C�$��� �� ����?�?�9�-�-��?��d�j�j��.�.�q�1�2�2�Q�6��=�C�C��_�_�Z�0�0��?��t�z�z�$�/�/��2�3�3�a�7�$�>�D��?�t�'7��E�� 8��� �c�>�2�2�2����d�% �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �����������5�7:�3�x�x�@��� �c�>�*�*�*����d�d�d�d�d�d���������4��=���d�G�S�$�?�?�?sN����;A)�)A-�0A-�5B��/B8�7B8�G��3B7F6�6F:�=F:� H�0H�Hc�������������������N����t������������������������}�t����������|��������������t����������d|�z��������������5�}|����������������������������������������������������������������������}ddd�������������n#�1�swxY�w�Y���|dt����������t����������j��������������������dz�������������}d��|D���������������}t ����������|��S�)z�Return a named tuple representing the following system-wide CPU times: (user, nice, system, idle, iowait, irq, softirq [steal, [guest, [guest_nice]]]) Last 3 fields may not be available on all Linux kernel versions. r����Nr���c������������������<�����g�|�]}t����������|������������t����������z����S�rB�����float�CLOCK_TICKSr����s��� rD���r����zcpu_times.<locals>.<listcomp>^��s#������ 5� 5� 5��e�A�h�h��$� 5� 5� 5rC���)r���r����r���r����r����r����r�����_fields)r����r����r����r����s��� rD���� cpu_timesr ��R��s��������"�#�#�K���%�%�%� �Y��,� -� -��&�������#�#�%�%��&��&��&��&��&��&��&��&��&��&��&�����&��&��&��&� �A�c�)�+�,�,�q�0�0� 1�F� 5� 5�f� 5� 5� 5�F��f��s����'A#�#A'�*A'c�����������������������t������������������������}�t����������|��������������g�}t����������d|�z��������������5�}|������������������������������������|D�]y}|���������������������d������������rb|�����������������������������������}|dt ����������t����������j��������������������dz�������������}d��|D���������������}t����������|��}|� ��������������������|��������������z|cddd�������������S�#�1�swxY�w�Y���dS�)zfReturn a list of namedtuple representing the CPU times for every CPU available on the system. r����s���cpur���c������������������<�����g�|�]}t����������|������������t����������z����S�rB���r��r����s��� rD���r����z!per_cpu_times.<locals>.<listcomp>p��s#������A�A�A�Q�%��(�(�[�0�A�A�ArC���N) r���r����r���r����r����r����r����r����r��r����)r�����cpusr����r����r����r�����entrys��� rD���� per_cpu_timesr%��b��s%������"�#�#�K���%�%�%� �D� �Y��,� -� -�� �� � � ������ #�� #�D����v�&�&�� #���������#�i�&7�"8�"8�1�"<� <�=��A�A�&�A�A�A��!�6�*�����E�"�"�"��� �� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �� �� s����BC�C�Cc�������������������N���� �t����������j��������d������������S�#�t����������$��r�d}�t����������dt ������������������������z��������������5�}|D�].}|��������������������������������������������������������d������������r|�dz ��}��/ �ddd�������������n#�1�swxY�w�Y���|�dk����r�t����������j��������d������������}t����������dt ������������������������z��������������5�}|D�]7}|� ��������������������d ������������d���������}|���������������������|������������r|�dz ��}��8 �ddd�������������n#�1�swxY�w�Y���|�dk����rY�dS�|�cY�S�w�xY�w) z0Return the number of logical CPUs in the system.�SC_NPROCESSORS_ONLNr���� %s/cpuinfos ���processorr���Nzcpu\dr����r����)r�����sysconf� ValueErrorr���r����lowerr�����re�compiler���r�����match)�numr����r�����searchs��� rD����cpu_count_logicalr1��v��s��������z�/�0�0�0����������� ���(9�(9�9� :� :�� �a��� �� ���:�:�<�<�*�*�<�8�8����1�H�C�� � �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ���!�8�8��Z��)�)�F��9��'8�'8�8�9�9�� !�Q���!��!�D��:�:�c�?�?�1�-�D��|�|�D�)�)��!��q����!� !�� !�� !�� !�� !�� !�� !�� !�� !�� !�� !����� !�� !�� !�� !���!�8�8��4�4�� � � �-���s]������+D$�2B��4D$��B �D$�B �;D$�;D�?D$�D �D$�D � D$�D$�#D$c�������������������P����t������������������������}�d}d}t����������j��������|������������pt����������j��������|������������D�]b}t����������|������������5�}|����������������������|�����������������������������������������������������������������������������������ddd�������������n#�1�swxY�w�Y����ct ����������|�������������}|dk����r|S�i�}i�}t����������dt������������������������z��������������5�}|D�]�}|����������������������������������������������������������������������}|s& �|d���������||d���������<���n#�t����������$�r�Y�nw�xY�wi�}�P|� ��������������������d������������r+|���������������������d d ������������\��} } t����������| ������������|| <����� �ddd�������������n#�1�swxY�w�Y���t����������|�����������������������������������������������}|pdS�)z2Return the number of physical cores in the system.z9/sys/devices/system/cpu/cpu[0-9]*/topology/core_cpus_listz?/sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_listNr���r(��� ���cpu cores����physical id)r4��r3��s��� :r���)�set�globr����addr����r����r����r���r+��r����r����r����r�����sumr����)�ls�p1�p2rs���r�����result�mapping�current_infor�����key�values��� rD����cpu_count_physicalrA�����s0������ ���B�� E�B� J�B�� �"� � �.���2����%��%�� �� � �� %�!��F�F�1�6�6�8�8�>�>�#�#�$�$�$� %�� %�� %�� %�� %�� %�� %�� %�� %�� %�� %����� %�� %�� %�� %�� ��W�W�F� ��{�{�� ���G��L� �\�O�$5�$5�5� 6� 6��3�!��� 3�� 3�D��:�:�<�<�%�%�'�'�D��� 3��$�\�2���L��8�9�9����������D�����!�����?�?�#A�B�B��3�!%���F�A�!6�!6�J�C��(+�E� � �L��%�� 3�3��3��3��3��3��3��3��3��3��3��3�����3��3��3��3�"�����!�!� "� "�F��>�T�sI����:B�B �B �-E8�D�E8� D$�!E8�#D$�$AE8�8E<�?E<c�������������������2����t����������dt������������������������z��������������5�}�d}d}d}|�D�]�}|���������������������d������������r(t����������|�����������������������������������d���������������������}ny|���������������������d������������r(t����������|�����������������������������������d���������������������}n<|���������������������d������������r't����������|�����������������������������������d���������������������}|�|�|��n��ddd�������������n#�1�swxY�w�Y���d}t����������j��������||||������������S�)z*Return various CPU stats as a named tuple.r����Ns���ctxtr���s���intrs���softirqr���)r���r���r����r����r����r���� scpustats)r�����ctx_switches� interrupts�soft_interruptsr�����syscallss��� rD���� cpu_statsrH�����sR����� �Y��!2�!2�2� 3� 3�� �q���� ����� �� �D����w�'�'�� 7�"�4�:�:�<�<��?�3�3�������)�)�� 7� ������a��1�1� � �����,�,�� 7�"%�d�j�j�l�l�1�o�"6�"6���'�O�,G�"�.���� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ���H����j�/�8�=��=��=s����C C5�5C9�<C9z'/sys/devices/system/cpu/cpufreq/policy0z$/sys/devices/system/cpu/cpu0/cpufreqc������������ �������6����d��}�g�}t����������t������������������������������������D�]�}�|�|������������}|s�t����������j��������j��������}t�����������||d������������d�������������}|�,t�����������||d������������d�������������}|�t ����������d�������������t����������|������������dz��}t����������t�����������||d������������������������������������dz��}t����������t�����������||d ������������������������������������dz��}|���������������������t����������j ��������|||���������������������������|S�) z�Return frequency metrics for all CPUs. Contrarily to other OSes, Linux updates these values in real-time. c������������������f�����d|�z��d|�z��fD�]%}t�����������j�����������������������������|������������r|c�S��&d�S�)Nz(/sys/devices/system/cpu/cpufreq/policy%sz%/sys/devices/system/cpu/cpu%s/cpufreq)r����rs����exists)r/���ps��� rD����get_pathzcpu_freq.<locals>.get_path���sR������@�3�F�=��C�E�� �� ���7�>�>�!�$�$����H�H�H�� �� rC����scaling_cur_freqN�r�����cpuinfo_cur_freqz!can't find current frequency filei����scaling_max_freq�scaling_min_freq)�ranger1��r����rs���r��r�����NotImplementedErrorr����r����r����scpufreq)rM��r�����nrs����pjoin�curr�max_�min_s��� rD����cpu_freqr[�����s=����� �� �� �����(�*�*�+�+�� ;�� ;�A��8�A�;�;�D��� ���G�L�E��u�u�T�#5�6�6��F�F�F�D��|���5�5��'9�:�:�T�J�J�J���<�-�;�=��=��=��t�9�9�t�#�D��s�5�5��'9�:�:�;�;�<�<�t�C�D��s�5�5��'9�:�:�;�;�<�<�t�C�D��J�J�w�'��d�D�9�9�:�:�:�:�� rC���z /proc/cpuinfoc������������ �������n����g�}�t����������dt������������������������z��������������5�}|D�]x}|��������������������������������������������������������d������������rO|���������������������dd������������\��}}|����������������������t ����������j��������t����������|������������dd��������������������������y �ddd�������������n#�1�swxY�w�Y���|�S�)z}Alternate implementation using /proc/cpuinfo. min and max frequencies are not available and are set to None. r(��s���cpu mhz����:r���r����N) r���r���r+��r����r����r����r���rU��r��)r����r����r����r?��r@��s��� rD���r[��r[�����s��������� ���(9�(9�9� :� :�� G�a��� G�� G���:�:�<�<�*�*�:�6�6��G�!%���D�!�!4�!4�J�C���J�J�w�/��e���b�"�E�E�F�F�F�� G� G�� G�� G�� G�� G�� G�� G�� G�� G�� G�� G����� G�� G�� G�� G� �� s����A<B*�*B.�1B.c������������������������g�S�)zGDummy implementation when none of the above files are present. rB���rB���rC���rD���r[��r[����s �������� rC���c�������������������������e�Zd�ZdS�)�_Ipv6UnsupportedErrorN)r?���r@���rA���rB���rC���rD���r`��r`����s���������������DrC���r`��c��������������������r�����e�Zd�ZdZd��Zd��Zd��Zed����������������Zed d���������������Z ed d���������������Z d d �ZdS�)�Connectionsaw��A wrapper on top of /proc/net/* files, retrieving per-process and system-wide open connections (TCP, UDP, UNIX) similarly to "netstat -an". Note: in case of UNIX sockets we're only able to determine the local endpoint/path, not the one it's connected to. According to [1] it would be possible but not easily. [1] http://serverfault.com/a/417946 c������������������L����dt�����������j��������t�����������j��������f}dt�����������j��������t�����������j��������f}dt�����������j��������t�����������j��������f}dt�����������j��������t�����������j��������f}dt�����������j��������d�f}|||||f||f|f|f||f|f|f|f||||f||f||fd�|�_��������d�|�_��������d�S�)N�tcp�tcp6�udp�udp6�unix)�allrd���tcp4re��rf���udp4rg��rh���inet�inet4�inet6)�socket�AF_INET�SOCK_STREAM�AF_INET6� SOCK_DGRAM�AF_UNIX�tmap�_procfs_path)�selfrj��re��rk��rg��rh��s��� rD����__init__zConnections.__init__ ��s���������v�~�v�'9�:������);�<���v�~�v�'8�9������):�;������-���$��d�D�1��$�<��G��G��$�<��G��G��G��4��t�,��D�\��D�\� �� �� ��!����rC���c�����������������������t����������t����������������������}t����������j��������|�j���������d|�d�������������D�]�} �t����������|�j���������d|�d|��������������}|���������������������d������������r<|dd�����������d�d����������}||������������������������������|t����������|������������f��������������q#�t����������t����������f$�r�Y���t����������$�r }|j��������t����������j ��������k����rY�d�}~����d�}~ww�xY�w|S�)Nr�����/fd�/fd/zsocket:[r����r8���)r����listr�����listdirrv��r����r����r����r����r���r!���r����r�����EINVAL)rw��r�����inodesrt����inoder��s��� rD����get_proc_inodeszConnections.get_proc_inodes7��s������T�"�"���*�4�+<�+<�+<�c�c�c�B�C�C�� 9�� 9�B� 9� �$�2C�2C�2C�S�S�S�"�"�!M�N�N����#�#�J�/�/��9�!�!�"�"�I�c�r�c�N�E��5�M�(�(�#�s�2�w�w��8�8�8����&�'9�:�� �� �� ������ �� �� ��9���,�,��H�H�H�H������ ������ s#����B%�%C!�8 C!�C�C�C!c�����������������������i�}t������������������������D�]H} �|���������������������|����������������������|��������������������������,#�t����������t����������t ����������f$�r�Y��Ew�xY�w|S��N)�pids�updater���r���r!���r ���)rw��r��r����s��� rD����get_all_inodeszConnections.get_all_inodesM��ss���������6�6�� �� �C� �� � �d�2�2�3�7�7�8�8�8�8��%�'9�?�K�� �� �� ���� ������ s����(=�A�Ac����������� �������(����|�����������������������d������������\��}}t����������|d������������}|sdS�t����������r|���������������������d������������}|t����������j��������k����r`t����������r1t ����������j��������|t����������j ��������|������������ddd����������������������}n�t ����������j��������|t����������j ��������|������������������������}n�t����������j ��������|������������} �t����������rCt ����������j��������t����������j ��������t����������j��������dgt����������j ��������d|�������������R���������������}nBt ����������j��������t����������j ��������t����������j��������dgt����������j ��������d|�������������R���������������}n$#�t����������$�r�t������������������������st �������������w�xY�wt#����������j��������||������������S�) a���Accept an "ip:port" address as displayed in /proc/net/* and convert it into a human readable form, like: "0500000A:0016" -> ("10.0.0.5", 22) "0000000000000000FFFF00000100007F:9E49" -> ("::ffff:127.0.0.1", 40521) The IP address portion is a little or big endian four-byte hexadecimal number; that is, the least significant byte is listed first, so we need to reverse the order of the bytes to convert it to an IP address. The port is represented as a two-byte hexadecimal number. Reference: http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html �:����rB����asciiNr8���z>4Iz<4I)r����r����r"����encodero��rp��� LITTLE_ENDIAN� inet_ntop�base64� b16decoderr���struct�pack�unpackr*��r���r`��r����addr)r����family�ip�ports��� rD����decode_addresszConnections.decode_address]��s������"��:�:�c�?�?���D��4��}�}����� ��2��� $����7�#�#�B��V�^�#�#��� D��%�f�f�.>�r�.B�.B�4�4�R�4�.H�I�I����%�f�f�.>�r�.B�.B�C�C����!�"�%�%�B� � ��G��)�����E�E�F�M�%��,D�,D�E�E�E�G��G�B�B�� �)�����E�E�F�M�%��,D�,D�E�E�E�G��G�B������ �� �� �$�����/�/�� ������|�B��%�%�%s ����BE��!E<Nc��������������#���� ��K����|�����������������������d������������r!t����������j�����������������������������|�������������sdS�t ����������|�t �����������������������5�}|������������������������������������t����������|d������������D�]�\��}} �|�����������������������������������dd����������\ ��}} } }}}}}}}n&#�t����������$�r�t����������d|��d|�d|���������������w�xY�w||v�r||���������d ���������\��} }nd \��} }|�|| k����r�x|t����������j��������k����rt����������|���������}nt����������j��������} �t �������������������������������| |������������} t �������������������������������| |������������} n#�t$����������$�r�Y���w�xY�w|||| | || fV����� �ddd�������������dS�#�1�swxY�w�Y���dS�)z.Parse /proc/net/tcp* and /proc/net/udp* files.�6N�� bufferingr���r�����error while parsing �; malformed line r����r����Nr8���)r����r����rs���rK��r����BIGFILE_BUFFERINGr����� enumerater����r*���RuntimeErrorro��rq���TCP_STATUSESr���� CONN_NONErb��r���r`��)�filer����type_r��� filter_pidr�����linenor����r���laddr�raddr�statusr���r����rt���s��� rD����process_inetzConnections.process_inet���s6�����������=�=����� �b�g�n�n�T�&:�&:�� ��F� �t�'8� 9� 9� 9�� I�Q� �J�J�L�L�L� )�!�Q���� I�� I����1�� � ���S�b�S�)��B�A�u�e�V�Q��1�a��E�E��!��1��1��1�&�,� �D�D�&�&�&�$�$�0�1��1��1�1������F�?�?��%�U�m�A�.�G�C���&�G�C���)�j�C�.?�.?���� 2�2�2�!-�f�!5���!(�!2��!� +� :� :�5�&� I� I�� +� :� :�5�&� I� I����0��!��!��!� ��!�����v�u�e�U�F�C�H�H�H�H�H�= I� I�� I�� I�� I�� I�� I�� I�� I�� I�� I�� I�� I����� I�� I�� I�� I�� I�� IsO����*E8�:'B"�!E8�"#C�AE8�6E� E8� E�E8�E�E8�8E<�?E<c����������� ���#����0��K����t����������|�t�����������������������5�}|������������������������������������|D�]�}|�����������������������������������} �|dd����������\��}}}}}}} n)#�t����������$�r�d|vrY��:t����������d|��d|���������������w�xY�w| |v�r || ���������} ndg} | D�]f\��}}|�||k����r�t ����������|������������d k����r |d ���������} nd} t����������j��������t����������|������������������������}d}t����������j ��������}|||| |||fV����g�� �ddd�������������dS�#�1�swxY�w�Y���dS�)zParse /proc/net/unix files.r���r�������r����r���r���r���Nr����r8�����)r���r���r����r����r*��r���r����r����socktype_to_enumr����r���)r���r���r��r���r����r�����tokensr��r���r����pairsr����rt���rs���r���r���s��� rD����process_unixzConnections.process_unix���s������������t�'8� 9� 9� 9��! L�Q� �J�J�L�L�L��� L�� L��������)�28��1��+�/�A�q�!�Q��q�%�%��!��)��)��)��$��� ��&�,� �D�D�$�$�(�)��)��)� )������F�?�?��#�5�M�E�E�'�L�E�$��L��L�G�C��!�-�*��2C�2C� ��v�;�;�!�+�+�#)�"�:�D�D�#%�D� '� 8��U��� D� D���!#��!(�!2��!�6�5�$��v�s�K�K�K�K�K�L�# L�! L��! L��! L��! L��! L��! L��! L��! L��! L��! L��! L��! L�����! L��! L��! L��! L��! L��! Ls6����-D�A�D�B��(D�*B���A=D�D�Dc�����������������������||�j���������vr7t����������d|�dd���������������������d��|�j���������D������������������������������������������t������������������������|�_��������|�|����������������������|������������}|sg�S�n|������������������������������������}t������������������������}|�j���������|���������D�]�\��}}}|�j���������d|��}|t����������j ��������t����������j ��������fv�r|����������������������|||||�������������} n|����������������������||||�������������} | D�]U\��} }}}}} }|rt����������j��������| ||||| ������������}nt����������j��������| ||||| |������������}|���������������������|��������������V��t#����������|������������S�)Nzinvalid z kind argument; choose between r��c������������������,�����g�|�]}t����������|��������������S�rB���)�reprr����s��� rD���r����z(Connections.retrieve.<locals>.<listcomp>���s������0L�0L�0L�Q��a���0L�0L�0LrC���z/net/)r���)ru��r*��r��r���rv��r���r���r5��ro��rp��rr��r���r���r����pconn�sconnr7��r|��)rw���kindr����r��r����� proto_namer���r���rs���r9��rt���r���r���r���� bound_pid�conns��� rD����retrievezConnections.retrieve���s�������t�y� � ��*� $���d�i�i�0L�0L�$�)�0L�0L�0L�&M�&M�&M�O��P��P�� P�+�-�-����?��)�)�#�.�.�F��� �� � ���(�(�*�*�F��e�e��)-��4��� �� �%�J���"&�"3�"3�"3�Z�Z�@�D��&�.�&�/�:�:�:��&�&��&�%��C��'��A��A�����&�&��&�&�S��'��:��:��FH�� �� �B��F�E�5�%�����<�"�=��V�U�E�5�)/�1��1�D�D��#�=��V�U�E�5�)/��<��<�D����� � � � � ���C�y�y�rC���r���)r?���r@���rA����__doc__rx��r���r����staticmethodr���r���r���r���rB���rC���rD���rb��rb����s��������������� �� �!��!��!�.�����,����� ��0&��0&���\�0&�d��%I��%I��%I���\�%I�N��#L��#L��#L���\�#L�J����������rC���rb��rl��c������������������6�����t��������������������������������|�������������S�)z$Return system-wide open connections.)�_connectionsr���)r���s��� rD����net_connectionsr�����s������� � ��&�&�&rC���c�����������������������t����������dt������������������������z��������������5�}�|������������������������������������}ddd�������������n#�1�swxY�w�Y���i�}|dd����������D�]�}|���������������������d������������}|dk����sJ�t ����������|���������������������������|d|���������������������������������������������}||dz���d��������������������������������������������������������������������������������}t����������t����������|������������\��}}} } }}} }}}}}}}}}||||| || |f||<�����|S�)zsReturn network I/O statistics for every network interface installed on the system as a dict of raw tuples. z %s/net/devNr<���r���r���r���) r���r���� readlines�rfindr���r����r�����mapr����)r�����lines�retdictr�����colonr����r����� bytes_recv�packets_recv�errin�dropin�fifoin�framein�compressedin�multicastin� bytes_sent�packets_sent�errout�dropout�fifoout� collisionsout� carrierout� compressedouts��� rD����net_io_countersr�����sj������ �<�/�"3�"3�3� 4� 4������� � �����������������������������������G��a�b�b� ��9��9��� � �3�����q�y�y�y�$�t�*�*�y�y�y��F�U�F�|�!�!�#�#���e�a�i�j�j�!�'�'�)�)�/�/�1�1��&��c�6�*�*�! �� � � � � � � � � � � � � � � �#�Z��|�����9��� � ��Ns����A���A�Ac������������������������t�����������j��������t����������t�����������j��������t����������t�����������j��������t����������i}�t�����������������������������������������������������������}i�}|D�]�} �t����������j ��������|������������}t����������j��������|������������}t����������j��������|������������\��}}t����������j��������||�|���������||������������||<����c#�t����������$�r }|j��������t ����������j��������k����r��Y�d}~��d}~ww�xY�w|S�)z)Get NIC stats (isup, duplex, speed, mtu).N)r���DUPLEX_FULLr����DUPLEX_HALFr����DUPLEX_UNKNOWNr���r����keys� cext_posix� net_if_mtu�net_if_is_running�net_if_duplex_speedr���� snicstatsr����r�����ENODEV) � duplex_map�namesr����r�����mtu�isup�duplex�speedr��s ��� rD����net_if_statsr���+��s��������"�O��"�O��%�'9�;�J�� ���"�"�$�$�E� �C��� P�� P�� P��'��-�-�C��/��5�5�D� �4�T�:�:�M�F�E�� �)�$� �6�0B�E�3�O�O�C��I�I����� �� �� ��y�E�L�(�(���)�(�(�(�(����� ������Js����?B=�= C'�C"�"C'Fc����������������������d��}d��}t�����������j�����������������������������dt������������������������z��������������r�|��������������}nHt�����������j�����������������������������d������������r�|��������������}nt ����������dt������������������������z���������������i�}|D�]C}|\ ��}}}} } }}} }}|�st����������|������������s�!| t����������z��} | t����������z��} ||| | ||| ||f ||<����D|S�)zcReturn disk I/O statistics for every disk installed on the system as a dict of raw tuples. c���������������3������K����t����������dt������������������������z��������������5�}�|������������������������������������}d�d�d��������������n#�1�swxY�w�Y���|D��]}|�����������������������������������}t ����������|������������}|dk����rF|d���������}t����������|d���������������������}t ����������t ����������|dd����������������������\ ��}}} } }}} }}}n�|dk����s|dk����r2|d���������}t ����������t ����������|dd����������������������\��}}}} } }}} }}}nM|dk����r5|d���������}t ����������t ����������|dd�����������������������\��}}} }d x} x} x}x}}nt����������d |z���������������||| ||| | |||f V����� d�S�)N�%s/diskstats����r#���r<���r$�����������r���r���z!not sure how to interpret line %r)r���r���r���r����r����r����r���r*��)r����r���r����r�����flenr�����reads�reads_merged�rbytes�rtime�writes� writes_merged�wbytes�wtimer��rq���s��� rD����read_procfsz%disk_io_counters.<locals>.read_procfsL��s����������"��~��(9�(9�9� :� :�� "�a��K�K�M�M�E� "�� "�� "�� "�� "�� "�� "�� "�� "�� "�� "����� "�� "�� "�� "��� ;�� ;�D��Z�Z�\�\�F��v�;�;�D��r�z�z��a�y���F�1�I����69�#�v�a��d�|�6L�6L�4��v�u�f�m��E�1�i�������t�r�z�z��a�y��69�#�v�a��d�|�6L�6L�4���f�e�V�]��E�1�i��������a�y��03�C������0D�0D�-��v�v�v�KL�L��L��L��L�}�y�y� �!D�t�!K�L�L�L�������u��� �;�� ;�� ;�� ;�� ;�+ ;�� ;s����A�A� Ac���������������3����\��K����t����������j��������d������������D��]}�t����������j��������t�����������j�����������������������������d|�������������������������D�]�\��}}}d|vr�t����������t�����������j�����������������������������|d������������������������5�}|���������������������������������������������������������������������������������������������������������}d�d�d��������������n#�1�swxY�w�Y���t�����������j��������� ��������������������|������������}t����������t����������|d�d����������������������\ ��}}} } }}} }}}|||| | | ||||f V����ސ�d�S�)N� /sys/block�statr����)r����r}���walkrs���r��r���r����r����r�����basenamer���r����)�block�rootr���filesr����r����r����r���r���r���r���r���r���r���r���rq���s��� rD���� read_sysfsz$disk_io_counters.<locals>.read_sysfsw��s}����������Z��-�-�� F�� F�E�"$�'�"�'�,�,�|�U�*K�*K�"L�"L�� F�� F���a����&�&���r�w�|�|�D�&�9�9�:�:��6�a��V�V�X�X�^�^�-�-�3�3�5�5�F�6��6��6��6��6��6��6��6��6��6��6�����6��6��6��6��w�'�'��-�-��36�s�F�3�B�3�K�3H�3H�1���f�e�V�]��E�1�i��U�F�F�F�E��l�M�9�F��F��F��F��F� F� F�� Fs����9C � C �C r���r���zC%s/diskstats nor /sys/block filesystem are available on this system)r����rs���rK��r���rT��r�����DISK_SECTOR_SIZE)�perdiskr���r���genr���r$��r����r���r���r���r���r���r���r���r���rq���s��� rD����disk_io_countersr��H��s-�����);��);��);�VF��F��F�� �w�~�~�n��'8�'8�8�9�9��*��k�m�m��� ����� %� %��*��j�l�l���!� �&�(�(� )�*��*�� *���G���A��A��(-� &��u�f�f�f�e�U�L��9��� �0��6�6�� �� ��"�"���"�"�������u�%�}�i�A��� � ���NrC���c����������� �������L����t������������������������}t������������������������}t����������d|z��������������5�}|D�]�}|�����������������������������������}|���������������������d������������s(|���������������������|�������������������������������������������������S|���������������������d������������d���������}|dk����r|���������������������d��������������� �ddd�������������n#�1�swxY�w�Y���|dk����r?t����������j��������� ��������������������d������������r t����������j��������� ��������������������d������������}n"t����������j��������� ��������������������d |z��������������}g�}t����������j��������|������������}|D�]P} | \��} }}}| d k����rd} |�s| dk����s||vr�dx} }t����������j��������| |||| |������������}|���������������������|��������������Q|S�)z8Return mounted disk partitions as a list of namedtuples.z%s/filesystems�nodev� r����zfsNr����z /etc/mtabz%s/self/mounts�noner���)r5��r���r���r����r����r7��r����r����rs����isfile�realpathr���disk_partitionsr���� sdiskpartr����)ri���fstypesr����r����r�����fstype�mounts_path�retlist� partitions� partition�device� mountpoint�opts�maxfile�maxpath�ntuples��� rD���r��r�����s�������e�e�G�!�#�#�K� �#�k�1� 2� 2�� '�a��� '�� '�D��:�:�<�<�D��?�?�7�+�+�� '����D�J�J�L�L�)�)�)�)�����D�)�)�!�,���U�?�?��K�K��&�&�&�� '� '�� '�� '�� '�� '�� '�� '�� '�� '�� '�� '����� '�� '�� '�� '���g���"�'�.�.��"=�"=���g�&�&�{�3�3����g�&�&�'7�+�'E�F�F���G��%�k�2�2�J��� �� � �+4�(�� �F�D��V����F��� ���|�|�v�W�4�4�� � ��'��"�6�:�v�t�#*�G�5��5�����v������Ns����B C � C �C c������������ �����������t����������j��������t����������������������}�t����������j��������d������������}|���������������������t����������j��������d�������������������������t����������t ����������d��|D���������������������������������������}t����������j��������d������������}t����������j��������d������������}|D�]1}|� ��������������������d|������������}||vr|� ��������������������|��������������2|D��]@} �|dz���}t����������t����������|������������������������dz��}t����������j�����������������������������t����������j�����������������������������|������������d ������������}t����������|d �������������} n#�t"����������t$����������t&����������f$�r�Y���w�xY�wt����������|dz���d �������������} t����������|dz���d �������������}t����������|dz���dd �������������}| �& �t����������| ������������dz��} n#�t&����������$�r�d } Y�nw�xY�w|�& �t����������|������������dz��}n#�t&����������$�r�d }Y�nw�xY�w|�| ���������� ��������������������||| |f���������������B|�s0t����������j��������d������������}t����������t ����������|������������������������}|D��]�} �t����������j�����������������������������|d������������}t����������t����������|������������������������dz��}t����������j�����������������������������|d������������}t����������|d �������������} n9#�t"����������t$����������t&����������f$�r} t)����������d| �d|���������������Y�d } ~ ��d } ~ ww�xY�wt����������j��������|dz���������������}t ����������d��|D���������������������������}d }d } |D�]�}t����������j�����������������������������||dz���������������}t����������|dd �������������}|dk����r3t����������t����������j�����������������������������||dz���������������d �������������}n8|dk����r2t����������t����������j�����������������������������||dz���������������d �������������} | �& �t����������| ������������dz��} n#�t&����������$�r�d } Y�nw�xY�w|�& �t����������|������������dz��}��#�t&����������$�r�d }Y���w�xY�w��|�| ���������� ��������������������d|| |f����������������t+����������|�������������S�)a���Return hardware (CPU and others) temperatures as a dict including hardware name, label, current, max and critical temperatures. Implementation notes: - /sys/class/hwmon looks like the most recent interface to retrieve this info, and this implementation relies on it only (old distros will probably use something else) - lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon - /sys/class/thermal/thermal_zone* is another one but it's more difficult to parse z/sys/class/hwmon/hwmon*/temp*_*z&/sys/class/hwmon/hwmon*/device/temp*_*c������������������D�����g�|�]}|����������������������d�������������d�����������S��r��r����r����r����s��� rD���r����z(sensors_temperatures.<locals>.<listcomp>����&������?�?�?��A�G�G�C�L�L��O�?�?�?rC���z5/sys/devices/platform/coretemp.*/hwmon/hwmon*/temp*_*z'/sys/devices/platform/coretemp.*/hwmon/z/sys/class/hwmon/�_inputg�����@�@r����F�r�����_maxNrO���_crit�_labelr����r����r����z /sys/class/thermal/thermal_zone*�temp�typez ignoring z for file z/trip_point*c�����������������������g�|�]O}d�����������������������t����������j�����������������������������|���������������������������������d�������������dd������������������������PS�)r��r���r#���)r��r����rs���r���r����)r����rL��s��� rD���r����z(sensors_temperatures.<locals>.<listcomp>%��sf�������J��J��J�9:�� #�x�x��� � ��#�#�)�)�#�.�.�q��s�3� 5�� 5��J��J��JrC����_type�critical�_temp�high)�collectionsr���r|��r6���extend�sortedr5��r,��r-���subr����r��r����r����rs���r���dirnamer����r����r*��r����dict)r����� basenames� basenames2�replr�����altname�basers���r����� unit_namer/��r-���labelr��� trip_paths�trip_points� trip_point� trip_types��� rD����sensors_temperaturesrA�����s�������� !�$� '� '�C�� �;�<�<�I�����T�Y�G�H�H�I�I�I��s�?�?�Y�?�?�?�@�@�A�A�I����?�A��A�J� �:�?�@�@�D���#��#���(�(�.��5�5���)�#�#����T�"�"�"���� @�� @�� ��(�?�D��C��I�I�&�&��/�G��7�<�<������ 5� 5�v�>�>�D��D��/�/�/�I�I����*�-�� �� �� �� �H� ������4�&�=�4�0�0�0���t�g�~��5�5�5���D�8�O�b��?�?�?���� ��T�{�{�V�+������ �� �� ����� ������ � ��?�?�V�3������ �� �� ����� ����� �I����u�g�t�X�>�?�?�?�?����(A��I�@�A�A� ��3�y�>�>�*�*� ���$ A��$ A�D� ��w�|�|�D�&�1�1����D� � �*�*�V�3���w�|�|�D�&�1�1����U�3�3�3� � ���W�j�1�� �� �� ���3�3�3���=�>�>�>���������� �������4�.�#8�9�9�J���J��J�>H�J��J��J��K��K�K��H��D�)�� (�� (� ��w�|�|�D�*�w�*>�?�?����r�%�@�@�@� �� �*�*�"�2�7�<�<��j�7�6J�#K�#K�,0� 2�� 2�� 2�H�H��&�(�(��r�w�|�|�D�*�w�2F�G�G�(,�.��.��.�D���#�$�$�T�{�{�V�3����%��$��$��$�#����$�����'�(�#(��?�?�V�#;����%��(��(��(�#'����(�����(�� � �N�!�!�2�w��h�"?�@�@�@�@���9�9�st����A2E�E*�)E*�-G���G�G�G(�(G7�6G7�A0K�K;�K6�6K;�O2�2P��P�P�P)�(P)c������������������������t����������j��������t����������������������}�t����������j��������d������������}|st����������j��������d������������}t ����������t����������d��|D���������������������������������������}|D�]�} �t ����������t����������|dz���������������������������}n;#�t����������t����������f$�r'}t����������j��������d|z��t�����������������������Y�d}~�Vd}~ww�xY�wt����������t����������j�����������������������������t����������j�����������������������������|������������d������������d� ������������}t����������|d z���dd�������������}|�|������������������������������t%����������j��������||���������������������������t)����������|�������������S�) a���Return hardware fans info (for CPU and other peripherals) as a dict including hardware label and current speed. Implementation notes: - /sys/class/hwmon looks like the most recent interface to retrieve this info, and this implementation relies on it only (old distros will probably use something else) - lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon z/sys/class/hwmon/hwmon*/fan*_*z%/sys/class/hwmon/hwmon*/device/fan*_*c������������������D�����g�|�]}|����������������������d�������������d�����������S�r ��r!��r����s��� rD���r����z sensors_fans.<locals>.<listcomp>T��r"��rC���r#��zignoring %rNr����Fr$��r'��r���r(��)r0��r���r|��r6��r2��r5��r����r����r����r����r��r ��r ��r����rs���r��r4��r����r����sfanr5��)r����r6��r:��r����r��r;��r<��s��� rD����sensors_fansrE��C��s\������� !�$� '� '�C�� �:�;�;�I���G���I�E�F�F� ��s�?�?�Y�?�?�?�@�@�A�A�I��� <�� <�� ��#�d�X�o�.�.�/�/�G�G����!�� �� �� ��M�-�#�-�~�>�>�>��H�H�H�H����� ����������R�W�_�_�T�%:�%:�F�C�C�$�&��&��&� ��D�8�O�b��?�?�?���I����g�l�5�'�:�:�;�;�;�;���9�9�s����/B�C� C�Cc�������������������F�����t��������������������������fd�}�d��t����������j��������t����������������������D���������������}|sdS�t����������j�����������������������������t����������t ����������|������������d���������������������}�|�|dz���|dz���������������}�|�|dz���|dz���������������}�|�|d z���|d z���������������}�|�|dz���������������}|�|� �d|z��|z��}n;#�t����������$�r�d }Y�n-w�xY�wt����������t����������|dz���d�������������������������}|dk����rdS�d}�|�t����������j�����������������������������t����������d������������t����������j�����������������������������t����������d������������������������} | �| dk����}n6t����������|dz���dd�������������� ����������������������������������} | dk����rd}n| dv�rd}|r t����������j��������}nj|�5|�3 �t����������||z��dz��������������}nO#�t����������$�r�t����������j ��������}Y�n7w�xY�w|�%t����������|dz��������������}|dk�����rt����������j ��������}nt����������j ��������}t����������j��������|||������������S�)a��Return battery information. Implementation note: it appears /sys/class/power_supply/BAT0/ directory structure may vary and provide files with the same meaning but under different names, see: https://github.com/giampaolo/psutil/issues/966 c�������������������������|�D�]@}t����������|��������������}|�k����r'|�����������������������������������rt����������|������������n|c�S��AdS�)zvAttempt to read the content of multiple files which may not exist. If none of them exist return None. rO��N)r�����isdigitr����)�pathsrs���r�����nulls��� �rD���� multi_catz"sensors_battery.<locals>.multi_catl��s\���������� :�� :�D��d�T�*�*�*�C��d�{�{�#&�;�;�=�=�9�s�3�x�x�x�c�9�9�9����trC���c������������������h�����g�|�]/}|����������������������d�������������sd|�����������������������������������v��-|��0S�)�BAT�battery)r����r+��r����s��� rD���r����z#sensors_battery.<locals>.<listcomp>v��sG�������$��$��$�!����U�8K�8K��$�������"�"�� �"�"�"rC���Nr���z/energy_nowz/charge_nowz /power_nowz/current_nowz/energy_fullz/charge_fullz/time_to_empty_nowg������Y@r����z /capacityr8���rO��z AC0/onlinez AC/onliner����/statusr���Fr(���discharging)�charging�fullTi���<���)�objectr����r}���POWER_SUPPLY_PATHrs���r��r2���ZeroDivisionErrorr����r����r+��r����POWER_TIME_UNLIMITED�POWER_TIME_UNKNOWN�sbattery) rK���batsr��� energy_now� power_now�energy_full� time_to_emptyr_���� power_plugged�onliner����secsleftrJ��s ��� @rD����sensors_batteryrb��c��s���������8�8�D����������$��$�r�z�"3�4�4��$��$��$�D�����t���7�<�<�)�6�$�<�<��?�;�;�D�����}���}�����J��� ��|���~�����I���)��~���~�����K���I�d�%9�9�:�:�M����:�#9� ��j�(�;�6�G�G�� �� �� �� ��G�G�G� ������c�$��,�r�:�:�:�;�;���b�=�=��4� ��M� �Y� ����&��5�5� ����&��4�4�6��6�F�����!�� � ��T�I�%��5�A�A�A�G�G�I�I���]�"�"�!�M�M� �+� +� +� �M����.��/��� � �I�$9� 2��:� �1�D�8�9�9�H�H�� �� 2�� 2�� 2��1�H�H�H� 2���� � "��}�r�)�*�*���a�<�<��1�H���-����G�X�}�=�=�=s$����=C��C�C�(F>��>G�Gc������������������������g�}�t����������j����������������������}|D�]C}|\��}}}}}}|s�|dv�rd}t����������j��������||pd|||������������} |����������������������| ��������������D|�S�)z:Return currently connected users as a list of namedtuples.)z:0.0z:0� localhostN)r���usersr����suserr����) r���rawlist�itemr�����tty�hostname�tstamp�user_processr�����nts ��� rD���re��re�����s��������G��j�l�l�G��� �� ��9=�6��c�8�V�\�3���� ���~�%�%�"�H� �]�4����h��� D� D�����r������NrC���c�������������������L����dt������������������������z��}�t����������|�������������5�}|D�]b}|���������������������d������������rKt����������|����������������������������������������������������������������������d���������������������}|a|c�cddd�������������S��ct����������d|�z���������������#�1�swxY�w�Y���dS�)zAReturn the system boot time expressed in seconds since the epoch.r����s���btimer���Nzline 'btime' not found in %s)r���r���r����r��r����r����� BOOT_TIMEr���)rs���r����r����r����s��� rD���� boot_timerp�����s����������(�(�(�D� �T� � ��3�a��� �� �D����x�(�(�� ��D�J�J�L�L�.�.�0�0��3�4�4��� �� � �3��3��3��3��3��3��3��3� ���*�T�1�3��3�� 3� 3��3��3��3�����3��3��3��3��3��3s����AB�B�B� Bc�������������������p�����d��t����������j��������t����������t������������������������������������������������D���������������S�)z7Returns a list of PIDs currently running on the system.c������������������T�����g�|�]%}|�������������������������������������t����������|��������������&S�rB���)rH��r����r����s��� rD���r����zpids.<locals>.<listcomp>���s+������L�L�L�q�� � ���L�C��F�F�L�L�LrC���)r����r}��r���r���rB���rC���rD���r���r������s.������L�L�B�J�q��):�):�';�';�<�<�L�L�L�LrC���c����������������������t����������j��������|�������������sdS� �t�������������������������d|��d�}t����������|������������5�}|D�]R}|���������������������d������������r;t����������|�����������������������������������d���������������������}||�k����c�cddd�������������S��St����������d|z���������������#�1�swxY�w�Y���dS�#�t����������t����������f$�r�|�t������������������������v�cY�S�w�xY�w)zcCheck for the existence of a unix PID. Linux TIDs are not supported (always return False). Fr����rO��s���Tgid:r���Nz'Tgid' line not found in %s) r���� pid_existsr���r���r����r����r����r*���EnvironmentErrorr���)r����rs���r����r�����tgids��� rD���rt��rt�����s[��������s�#�#��!��u� !��&5�%6�%6�%6�%6����<�D��T�"�"�� G�a���+��+�D����x�0�0��+�"�4�:�:�<�<��?�3�3��� $�s�{�*�*� G�� G�� G�� G�� G�� G�� G�� G�+� �!�!>��!E�F�F�F� G�� G�� G�� G����� G�� G�� G�� G�� G�� G���!�*�-�� !�� !�� !��$�&�&�=� � � � !���s;����#B0��AB#�B0��B#�#B'�'B0��*B'�+B0��0!C�Cc�����������������������i�}�t������������������������}t������������������������D�]�} �t����������|�d|�d�������������5�}|�����������������������������������}ddd�������������n#�1�swxY�w�Y���|���������������������d������������}||dz���d���������������������������������������������}t ����������|d���������������������}||�|<�����#�t����������t����������f$�r�Y���w�xY�w|�S�)zsObtain a {pid: ppid, ...} dict for all running processes in one shot. Used to speed up Process.children(). r�����/statN����)r<���r���) r���r���r���r����r���r����r����r���r!���)r����r����r����r�����data�rpar�dset�ppids��� rD����ppid_mapr~����s!������ �C�!�#�#�K��v�v������ ��[�[�[�#�#�#�>�?�?�� �1��v�v�x�x�� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ���:�:�d�#�#�D���q�� � �?�(�(�*�*�D��t�A�w�<�<�D��C��H�H���"�#5�6�� �� �� �� �D� ������Js4����B2�A�B2�A �B2�A � B2�2C�Cc������������������F�������t����������j������������������������fd���������������}|S�)zlDecorator which translates bare OSError and IOError exceptions into NoSuchProcess and AccessDenied. c������������������X����� ���|�g|�R�i�|��S�#�t�����������$�r�t����������|�j��������|�j���������������������t����������$�r�t����������|�j��������|�j���������������������t����������$�rJ�t����������j��������� ��������������������|�j ���������d|�j����������������������st����������|�j��������|�j�����������������������w�xY�w)Nr����)r ���r���r�����_namer!���r���r���r����rs���rK��rv��)rw���args�kwargs�funs��� �rD����wrapperz wrap_exceptions.<locals>.wrapper%��s�������� ��3�t�-�d�-�-�-�f�-�-�-���� 5�� 5�� 5��t�x���4�4�4�!�� 6�� 6�� 6����$�*�5�5�5� �� �� �� ��7�>�>�T�->�->�->����"I�J�J�� :�#�D�H�d�j�9�9�9�� � ���s ������BB))� functools�wraps)r���r���s���` rD����wrap_exceptionsr���!��s:���������_�S����������������NrC���c������������������������e�Zd�ZdZg�d�Zd��Zd��Zeed������������������������������Z eed������������������������������Z eed������������������������������Zd��Zd ��Z ed ����������������Zd��Zed����������������Zed ����������������Zed����������������Zej�����������������������������d�ej����������������������z��������������red����������������Zed����������������Zed����������������Zed5d���������������Zed����������������Zed����������������Zer:e�ej��������d�������������ej��������d�������������ej��������d������������fd���������������Z neZ ered����������������Z!ed����������������Z"e�ej��������d������������fd���������������Z#e�ej��������d������������fd ���������������Z$ed!����������������Z%ed"����������������Z&ed#����������������Z'e(r)ed$����������������Z)�ej��������d%������������fd&�Z*ed'����������������Z+e,red(����������������Z-ed)����������������Z.e/�ed5d*���������������Z0ed+����������������Z1ed,����������������Z2ed6d.���������������Z3ed/����������������Z4ed0����������������Z5e�ej��������d1������������fd2���������������Z6e�ej��������d3������������fd4���������������Z7dS�)7�ProcesszLinux process implementation.)r����r����_ppidrv���_cachec������������������V�����||�_���������d�|�_��������d�|�_��������t������������������������|�_��������d�S�r���)r����r���r���r���rv��)rw��r����s��� rD���rx��zProcess.__init__;��s+����������� ��� �+�-�-����rC���c������������������L�����t����������j��������|�j���������d|�j�����������������������dS�)z+Raise NSP if the process disappeared on us.r����N)r����r���rv��r�����rw��s��� rD���� _assert_alivezProcess._assert_aliveA��s,������� ��4�,�,�,�d�h�h�7�8�8�8�8�8rC���c������������������.����t����������|�j���������d|�j���������d�������������5�}|�����������������������������������}ddd�������������n#�1�swxY�w�Y���|���������������������d������������}||���������������������d������������dz���|����������}||dz���d���������������������������������������������}i�}||d<���|d ���������|d <���|d���������|d<���|d���������|d <���|d���������|d<���|d���������|d<���|d���������|d<���|d���������|d<���|d���������|d<���|d���������|d<���|d���������|d<���|S�)aZ��Parse /proc/{pid}/stat file and return a dict with various process info. Using "man proc" as a reference: where "man proc" refers to position N always substract 3 (e.g ppid position 4 in 'man proc' == position 1 in here). The return value is cached in case oneshot() ctx manager is in use. r����rx��Nry������(r���r<���r����r���r���r}��r$����ttynr�����utime�����stime� ����children_utimer����children_stime�����create_time�$����cpu_num�'����blkio_ticks)r���rv��r����r����r����findr����)rw��r����rz��r{��r����r����r����s��� rD����_parse_stat_filezProcess._parse_stat_fileG��sn��������):�):�):�D�H�H�H�E� F� F�� �!��6�6�8�8�D� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� � ��z�z�$�����D�I�I�d�O�O�a�'��,�-���d�Q�h�i�i��&�&�(�(������F���q� ��H� ��Q�i��F���a�y��G���b�z��G���b�z��G�� &�r� ���� &�r� ����#�B�Z��M������I��#�B�Z��M��� �����A�A�Ac�����������������������t����������|�j���������d|�j���������d�������������5�}|�����������������������������������cddd�������������S�#�1�swxY�w�Y���dS�)z�Read /proc/{pid}/stat file and return its content. The return value is cached in case oneshot() ctx manager is in use. r����rO��N)r���rv��r����r�����rw��r����s��� rD����_read_status_filezProcess._read_status_filej��s���������4�+<�+<�+<�d�h�h�h�G� H� H�� �A��6�6�8�8� �� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �� �� s����A�A�Ac������������������������t����������|�j���������d|�j���������d�t�����������������������5�}|����������������������������������������������������������������������cd�d�d��������������S�#�1�swxY�w�Y���d�S�)Nr����z/smapsr���)r���rv��r����r���r����r����r���s��� rD����_read_smaps_filezProcess._read_smaps_filet��s���������$�*;�*;�*;�T�X�X�X�F�#4�6��6��6�� $�9:��6�6�8�8�>�>�#�#� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�� $����� $�� $�� $�� $�� $�� $s����&A�A�!Ac�����������������������|�j������������������������������|��������������|�j�����������������������������|��������������|�j�����������������������������|��������������d�S�r���)r����cache_activater���r���r���s��� rD���� oneshot_enterzProcess.oneshot_enter{��sM��������,�,�T�2�2�2���-�-�d�3�3�3���,�,�T�2�2�2�2�2rC���c�����������������������|�j������������������������������|��������������|�j�����������������������������|��������������|�j�����������������������������|��������������d�S�r���)r����cache_deactivater���r���r���s��� rD����oneshot_exitzProcess.oneshot_exit���sM��������.�.�t�4�4�4���/�/��5�5�5���.�.�t�4�4�4�4�4rC���c������������������f�����|�������������������������������������d���������}t����������rt����������|������������}|S�)Nr����)r���r"���r ���)rw��r����s��� rD���r����zProcess.name���s0�������$�$�&�&�v�.���� ��$�<�<�D��rC���c���������������������� �t����������|�j���������d|�j���������d�������������S�#�t����������t����������f$�r��t ����������j�����������������������������|�j���������d|�j����������������������rY�dS�t����������|�j��������������������st����������|�j��������|�j ���������������������t����������|�j��������|�j ��������|�j���������������������t����������$�r�t����������|�j��������|�j ���������������������w�xY�w)Nr����z/exer���)r����rv��r����r���r!���r����rs����lexistsrt��r���r���r���r���r ���r���r���s��� rD����exezProcess.exe���s������� 5��4�+<�+<�+<�d�h�h�h�G�H�H�H��!�#5�6�� J�� J�� J���w���$�*;�*;�*;�T�X�X�F�G�G�� J��r�r�!�$�(�+�+��J�'���$�*�=�=�=�'���$�*�d�j�I�I�I��� 5�� 5�� 5��t�x���4�4�4� 5���s����!��?C�#A2Cc����������������������t����������|�j���������d|�j���������d�������������5�}|�����������������������������������}d�d�d��������������n#�1�swxY�w�Y���|sg�S�|���������������������d������������rdnd}|���������������������|������������r |d�d����������}|���������������������|������������}|dk����r,t ����������|������������dk����rd|v�r|���������������������d������������}|S�)Nr����z/cmdliner����r����r8���r���)r���rv��r����r����r����r����r����)rw��r����rz���sep�cmdlines��� rD���r���zProcess.cmdline���s����� �$�*;�*;�*;�T�X�X�X�F� G� G�� �1��6�6�8�8�D� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ��� ��I��� � �f�-�-�6�f�f�3���=�=����� �����9�D��*�*�S�/�/����&�=�=�S��\�\�Q�.�.�3�$�;�;��j�j��o�o�G��r���c�����������������������t����������|�j���������d|�j���������d�������������5�}|�����������������������������������}d�d�d��������������n#�1�swxY�w�Y���t ����������|������������S�)Nr����z/environ)r���rv��r����r����r���)rw��r����rz��s��� rD����environzProcess.environ���s������� �$�*;�*;�*;�T�X�X�X�F� G� G�� �1��6�6�8�8�D� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �"�4�(�(�(r���c�����������������������t����������|������������������������������������d���������������������}t����������j����������������������} �||���������S�#�t����������$�r�Y�d�S�w�xY�w)Nr���)r����r���r����get_terminal_mapr����)rw���tty_nrru��s��� rD����terminalzProcess.terminal���s_�������T�*�*�,�,�W�5�6�6���(�*�*�� ���<����� �� �� ��4�4� ���s����A�� A�Az/proc/%s/ioc����������� ������� ����|�j����������d|�j���������d�}i�}t����������|������������5�}|D�]T}|�����������������������������������}|r< �|���������������������d������������\��}}t����������|������������||<����D#�t����������$�r�Y��Pw�xY�w�U �d�d�d��������������n#�1�swxY�w�Y���|st����������d|z��������������� �t����������|d���������|d���������|d���������|d���������|d ���������|d ���������������������S�#�t����������$�r"}t ����������|d����������d|�d |���������������d�}~ww�xY�w)Nr����z/ios���: z%s file was emptys���syscrs���syscws ���read_bytess���write_bytess���rchars���wcharr���z field was not found in z; found fields are ) rv��r����r���r����r����r����r*��r���r����r����)rw��r����r����r����r����r����r@��r��s��� rD����io_counterszProcess.io_counters���s������"&�"3�"3�"3�T�X�X�X�>�E��F��U�#�#�� 6�q��� 6�� 6�D��:�:�<�<�D���6�6�*.�*�*�U�*;�*;�K�D�%� �,/�u�:�:�F�4�L�L�� � *��%��%��%�$�H�%����6� 6� 6�� 6�� 6�� 6�� 6�� 6�� 6�� 6�� 6�� 6�� 6����� 6�� 6�� 6�� 6���� @�"�#6��#>�?�?�?� E���8�$��8�$��=�)��>�*��8�$��8�$� ��������� E�� E�� E� �-0��V�V�V�U�U�U�F�F�"D��E��E��E����� E���sM����B ��A+�B �+ A8�5B �7A8�8B � B �B �)7C!��! D �+D�D c������������������r����|�������������������������������������}t����������|d���������������������t����������z��}t����������|d���������������������t����������z��}t����������|d���������������������t����������z��}t����������|d���������������������t����������z��}t����������|d���������������������t����������z��}t����������|||||������������S�)Nr���r���r���r���r���)r���r��r��r����)rw��r����r���r���r���r���r����s��� rD���r ��zProcess.cpu_times���s��������&�&�(�(���f�W�o�&�&��4���f�W�o�&�&��4���v�&6�7�8�8�;�F���v�&6�7�8�8�;�F���v�m�,�-�-��;�����~�~�v�N�N�NrC���c������������������P�����t����������|������������������������������������d���������������������S�)zWhat CPU the process is on.r����r����r���r���s��� rD���r���zProcess.cpu_num���s#��������4�(�(�*�*�9�5�6�6�6rC���Nc������������������B�����t����������j��������|�j��������||�j��������������������S�r���)r����wait_pidr����r���)rw���timeouts��� rD����waitzProcess.wait���s������� ���7�D�J�?�?�?rC���c�����������������������t����������|������������������������������������d���������������������}t����������p t������������������������}|t����������z��|z���S�)Nr���)r��r���ro��rp��r��)rw���ctime�bts��� rD���r���zProcess.create_time���s@�������d�+�+�-�-�m�<�=�=���� %�)�+�+����#�r�)�)rC���c����������� �����������t����������|�j���������d|�j���������d�������������5�}d��|����������������������������������������������������������������������d�d����������D���������������\��}}}}}}}d�d�d��������������n#�1�swxY�w�Y���t����������|||||||������������S�)Nr����z/statmc������������������<�����g�|�]}t����������|������������t����������z����S�rB���)r����r����r����s��� rD���r����z'Process.memory_info.<locals>.<listcomp>��s#������E�E�E�q��Q���(�"�E�E�ErC���r���)r���rv��r����r����r����rx���) rw��r�����vmsr~���rf����text�librz���dirtys ��� rD����memory_infozProcess.memory_info��s���������$�*;�*;�*;�T�X�X�X�F� G� G�� F�1�E�E�A�J�J�L�L�,>�,>�,@�,@��!��,D�E�E�E�� 5�C��f�d�C��u� F�� F�� F�� F�� F�� F�� F�� F�� F�� F�� F����� F�� F�� F�� F���C��f�d�C��u�=�=�=s����AA-�-A1�4A1s���\nPrivate.*:\s+(\d+)s���\nPss\:\s+(\d+)s���\nSwap\:\s+(\d+)c����������������������|�������������������������������������}|������������������������������������}t����������t����������t����������|���������������������|������������������������������������dz��}t����������t����������t����������|���������������������|������������������������������������dz��}t����������t����������t����������|���������������������|������������������������������������dz��}t ����������||||fz�����S�)Nr��)r���r���r8��r���r�����findallry���) rw���_private_re�_pss_re�_swap_re� basic_mem� smaps_datarz���r{���r|���s ��� rD����memory_full_infozProcess.memory_full_info��s���������(�(�*�*�I���.�.�0�0�J���c�#�{�2�2�:�>�>�?�?�@�@�4�G�C��c�#�w���z�:�:�;�;�<�<�t�C�C��s�3�� 0� 0�� <� <�=�=�>�>��E�D��Y�#�s�D�)9�9�:�:rC���c�����������������������d��}|�������������������������������������}|sg�S�|���������������������d������������}g�}|���������������������d������������}|g}�|||������������D��]�\��}}|���������������������dd������������} �|\��} } }}} }n#�t����������$�r�|dgz���\��} } }}} }Y�nw�xY�w|sd}nXt����������rt����������|������������}|�����������������������������������}|���������������������d������������rt����������|������������s |dd ����������}|� ��������������������t����������| ������������t����������| ������������||� ��������������������d d������������|� ��������������������dd������������|� ��������������������dd������������|� ��������������������d d������������|� ��������������������dd������������|� ��������������������dd������������|� ��������������������dd������������|� ��������������������dd������������|� ��������������������dd������������|� ��������������������dd������������f ����������������|S�)aP��Return process's mapped memory regions as a list of named tuples. Fields are explained in 'man proc'; here is an updated (Apr 2012) version: http://goo.gl/fmebo /proc/{PID}/smaps does not exist on kernels < 2.6.14 or if CONFIG_MMU kernel configuration option is not enabled. c��������������3�������K����i�}|�D�]�}|����������������������d�d������������}|d������������������������������d������������s.|�����������������������������������|fV���|���������������������|��������������a �t ����������|d���������������������dz��||d���������<�����#�t ����������$�r0�|d������������������������������d������������rY���t����������d|z���������������w�xY�w|�����������������������������������|fV���d�S�)N����r���r]��r���r��s���VmFlags:z#don't know how to interpret line %r)r����r�����popr����r����r*��r����)r���� current_blockrz��r����r����s��� rD���� get_blocksz'Process.memory_maps.<locals>.get_blocksE��s*�����������!��I��I�D�!�Z�Z��a�0�0�F�!�!�9�-�-�d�3�3�� I�,�0�0�2�2�D�9�9�9�9�%�,�,�T�2�2�2�2�I�.1�&��)�n�n�t�.C�D����O�O��)��I��I��I�%�a�y�3�3�K�@�@��I� (��&0��2A�CG�2H��'I��'I��!I�I�����%�(�(�*�*�D�1�1�1�1�1�1s����)!B�%C�2C���� r���Nr���r���z[anon]r����r����s���Rss:s���Size:s���Pss:s ���Shared_Clean:s ���Shared_Dirty:s���Private_Clean:s���Private_Dirty:s���Referenced:s ���Anonymous:s���Swap:)r���r����r���r*��r"���r ���r����r����r���r����r����)rw��r���rz��r���r9��� first_liner����header�hfieldsr����perms�offset�devr���rs���s��� rD����memory_mapszProcess.memory_maps<��s+����� 2�� 2�� 2�(��(�(�*�*�D��� �� ��J�J�u�%�%�E��B����1���J�'�L�M� *� �5�-� @� @�� �� ���� �,�,�t�Q�/�/��'�<C�9�D�%���e�T�T��!��'��'��'��2�$���:�D�%���e�T�T�T�'�������*�#�D�D���,�%�d�|�|���:�:�<�<�D�� � �l�3�3��*�.�t�4�4�*�#�D�S�D�z��� � ��4�L�L�&��-�-���H�H�W�a�(�(��H�H�X�q�)�)��H�H�W�a�(�(��H�H�-�q�1�1��H�H�-�q�1�1��H�H�.��2�2��H�H�.��2�2��H�H�^�Q�/�/��H�H�]�A�.�.��H�H�X�q�)�)������������Is����4 A>�>B�Bc���������������������� �t����������|�j���������d|�j���������d�������������S�#�t����������t����������f$�rO�t����������|�j��������������������st ����������|�j��������|�j���������������������t����������|�j��������|�j��������|�j ���������������������w�xY�w)Nr����z/cwd) r����rv��r����r���r!���rt��r���r���r���r���r���s��� rD����cwdzProcess.cwd���s������� F��4�+<�+<�+<�d�h�h�h�G�H�H�H��!�#5�6�� F�� F�� F��d�h�'�'�� F�#�D�H�d�j�9�9�9�#�D�H�d�j�$�*�E�E�E� F���s ����!��A Bs���ctxt_switches:\t(\d+)c����������������������|�������������������������������������}|���������������������|������������}|s t����������d|�j���������d|�j���������d��������������t����������j��������t����������|d���������������������t����������|d���������������������������������S�)NzR'voluntary_ctxt_switches' and 'nonvoluntary_ctxt_switches'lines were not found in r����z1/status; the kernel is probably older than 2.6.23r���r���)r���r���rT��rv��r����r����pctxswr����)rw��� _ctxsw_rerz���ctxsws��� rD����num_ctx_switcheszProcess.num_ctx_switches���s���������%�%�'�'���!�!�$�'�'���� @�%�%���%�%�%�t�x�x�x�1�2��2�� 2���>�#�e�A�h�-�-��U�1�X���?�?�?rC���s���Threads:\t(\d+)c������������������z�����|�������������������������������������}t����������|���������������������|������������d���������������������S��Nr���)r���r����r���)rw���_num_threads_rerz��s��� rD����num_threadszProcess.num_threads���s6������ ��%�%�'�'���?�*�*�4�0�0��3�4�4�4rC���c�����������������������t����������j��������|�j���������d|�j���������d�������������}|������������������������������������g�}d}|D��] }|�j���������d|�j���������d|�d�} �t����������|������������5�}|����������������������������������������������������������������������}d�d�d��������������n#�1�swxY�w�Y���n#�t����������$�r�d}Y��uw�xY�w||� ��������������������d������������dz���d�����������}|� ��������������������d ������������}t����������|d ���������������������t����������z��} t����������|d���������������������t����������z��} t����������j��������t����������|������������| | ������������}|���������������������|���������������"|r|�������������������������������������|S�)Nr����z/taskFz/task/rx��Try��r<���r��r���r���)r����r}��rv��r�����sortr���r����r����r���r���r����r��r��r����pthreadr����r����r���)rw��� thread_idsr��� hit_enoent� thread_idr����r�����str����r���r���r��s��� rD����threadszProcess.threads���s�������Z��0A�0A�0A�4�8�8�8� L�M�M� ���������� �#�� #�� #�I��!�!�!�4�8�8�8�Y�Y�Y�8�E� � ��'�'��*�1��������)�)�B�*��*��*��*��*��*��*��*��*��*��*�����*��*��*��*���$�� �� �� ��"� ��� ������B�G�G�D�M�M�A�%�&�&�'�B��X�X�d�^�^�F��&��*�%�%��3�E��&��*�%�%��3�E��_�S��^�^�U�E�B�B�F��N�N�6�"�"�"�"��� !���� � � ��s6����B&�''B�B&�B �B&�!B �"B&�&B5�4B5c������������������4�����t����������j��������|�j��������������������S�r���)r����getpriorityr����r���s��� rD����nice_getzProcess.nice_get���s��������%�d�h�/�/�/rC���c������������������6�����t����������j��������|�j��������|������������S�r���)r����setpriorityr����)rw��r@��s��� rD����nice_setzProcess.nice_set���s�������%�d�h��6�6�6rC���c������������������4�����t����������j��������|�j��������������������S�r���)r��r6���r����r���s��� rD����cpu_affinity_getzProcess.cpu_affinity_get���s�������-�d�h�7�7�7rC���s���Cpus_allowed_list:\t(\d+)-(\d+)c����������� �������f����|�������������������������������������}|���������������������|������������}|rRt����������t����������t ����������|d���������d���������������������t ����������|d���������d���������������������dz���������������������������S�t����������t����������t����������t ������������������������������������������������������������S�)Nr���r���)r���r���r|��rS��r����r����r%��)rw���_rerz��r.��s��� rD����_get_eligible_cpuszProcess._get_eligible_cpus���s���������)�)�+�+�D��K�K��%�%�E��� 9��E�#�e�A�h�q�k�"2�"2�C��a����4D�4D�q�4H�I�I�J�J�J��E�#�m�o�o�"6�"6�7�7�8�8�8rC���c����������� ������������ �t����������j��������|�j��������|�������������d�S�#�t����������t����������f$�r�}t����������|t����������������������s|j��������t����������j��������k����r�|������������������������������������}t����������t����������t����������t������������������������������������������������������������}|D�]4}||vrt ����������d|�d|���������������||vrt ����������d|�d|����������������5��d�}~ww�xY�w)Nzinvalid CPU number z; choose between zCPU number z! is not eligible; choose between ) r���proc_cpu_affinity_setr����r����r*��r����r����r~��r���tuplerS��r����r%��)rw��r#��r��� eligible_cpus�all_cpus�cpus��� rD����cpu_affinity_setzProcess.cpu_affinity_set���s����� ��*�4�8�T�:�:�:�:�:���Z�(�� �� �� ��c�:�.�.��E�#�)�u�|�2K�2K�$(�$;�$;�$=�$=�M�$�U�3�}���+?�+?�%@�%@�A�A�H�#��E��E���h�.�.�",�*�$'�C�C���!8�#9��#9��9���m�3�3�",�*�03���]�]�!D�#E��#E��E��4������� ���s������C�B+C�Cc�����������������������t����������j��������|�j��������������������\��}}t�����������t ����������|������������}t����������j��������||������������S�r���)r��r5���r�����enumr>���r����pionice�rw���ioclassr@��s��� rD���� ionice_getzProcess.ionice_get���s=������!�1�$�(�;�;�N�G�U���$�W�-�-���?�7�E�2�2�2rC���c�����������������������|�d}|r"|t�����������t����������fv�rt����������d|z���������������|dk�����s|dk����rt����������d�������������t����������j��������|�j��������||������������S�)Nr���z%r ioclass accepts no valuer���zvalue not in 0-7 range)r)���r&���r*��r���proc_ioprio_setr����r ��s��� rD���� ionice_setzProcess.ionice_set���sq�������}����� J��%6�8I�$J�J�J� �!>��!H�I�I�I��q�y�y�E�A�I�I� �!9�:�:�:��'���'�5�A�A�ArC���c����������������������|�j���������dk����rt����������d������������� �|�t����������|�j���������|������������S�t����������|������������dk����rt����������dt ����������|������������z���������������t����������|�j���������||�������������d�S�#�t ����������$�rO}|j��������t����������j��������k����r4t����������|�j���������������������r t����������|�j���������|�j ��������|�j�����������������������d�}~ww�xY�w)Nr���z)can't use prlimit() against PID 0 processr<���z4second argument must be a (soft, hard) tuple, got %s)r����r*��r����r����r���r����r�����ENOSYSrt��r���r���r���)rw��r����r����r��s��� rD����rlimitzProcess.rlimit��s������� ��x�1�}�}� �!L�M�M�M� ��>�"�4�8�Y�7�7�7���6�{�{�a�'�'�(�%�'+�F�|�|�4�5��5��5���D�H�i��8�8�8�8�8���� �� �� ��9���,�,��D�H�1E�1E�,��(���$�*�d�j�I�I�I������ ���s����A=��AA=��= C�A C�Cc�����������������������|�������������������������������������d���������}t����������r|�����������������������������������}t�������������������������������|d������������S�)Nr����?)r���r"���r ���� PROC_STATUSESr����)rw���letters��� rD���r���zProcess.status��sC�������&�&�(�(��2���� %��]�]�_�_�F�� � ���-�-�-rC���c�����������������������g�}t����������j��������|�j���������d|�j���������d�������������}d}|D��]�}|�j���������d|�j���������d|��} �t ����������|������������}|���������������������d�������������r%t ����������|�������������r|�j���������d|�j���������d|��} �t����������|������������5�}t����������|� ����������������������������������� ����������������������������������d���������������������}t����������|� ����������������������������������� ����������������������������������d���������d������������} d�d�d��������������n#�1�swxY�w�Y���t����������| ������������} t����������|t����������|������������t����������|������������| | ������������}|� ��������������������|���������������O#�t����������$�r�d}Y���^w�xY�w��d#�t����������t����������f$�r�d}Y���zt ����������$�r!}|j��������t"����������j��������k����rY�d�}~�����d�}~ww�xY�w|r|�������������������������������������|S�) Nr����rz��Fr{��z/fdinfo/r���r����T)r����r}��rv��r����r����r����r���r���r����r����r����r����rr���r����r���r!���r����r����r~��r���) rw��r��r��r���rt���r���rs���r�����posrw���rv���r��r��s ��� rD���� open_fileszProcess.open_files&��sj�������� ��):�):�):�D�H�H�H�E�F�F��� ���" /��" /�B�$(�$5�$5�$5�t�x�x�x���D�D� /���~�~����?�?�3�'�'��/�M�$�,?�,?��/���)�)�)�4�8�8�8�R�R�9�D�/�(��.�.��D�!�"%�a�j�j�l�l�&8�&8�&:�&:�1�&=�">�">�C�$'�� � ���(:�(:�(<�(<�Q�(?��$C�$C�E�D��D��D��D��D��D��D��D��D��D��D�����D��D��D��D�� 2�%�8�8��!*� �#�b�'�'�3�s�8�8�T�5�"B��"B�����v�.�.�.�.���-��*��*��*��&*� � � �*������-�&�'9�:�� �� �� �!� ����� �� �� ��9���,�,��H�H�H�H������ ����6��� !���� � � ��s[����F� E:�A4D�E:�D � E:�#D �$E:�:F � F �G�% G�.G � G � Grl��c������������������n�����t��������������������������������||�j��������������������}|�������������������������������������|S�r���)r���r���r����r���)rw��r���r����s��� rD����connectionszProcess.connectionsR��s0�������#�#�D�$�(�3�3��������� rC���c������������������d�����t����������t����������j��������|�j���������d|�j���������d�������������������������S�)Nr����rz��)r����r����r}��rv��r����r���s��� rD����num_fdszProcess.num_fdsX��s.�������2�:�D�,=�,=�,=�t�x�x�x�H�I�I�J�J�JrC���c������������������P�����t����������|������������������������������������d���������������������S�)Nr}��r���r���s��� rD���r}��zProcess.ppid\��s!�������4�(�(�*�*�6�2�3�3�3rC���s���Uid:\t(\d+)\t(\d+)\t(\d+)c������������������������|�������������������������������������}|���������������������|������������d���������\��}}}t����������j��������t ����������|������������t ����������|������������t ����������|������������������������S�r���)r���r���r����puidsr����)rw���_uids_rerz���real� effective�saveds��� rD����uidszProcess.uids`���X�������%�%�'�'��!)�!1�!1�$�!7�!7��!:���i���}�S��Y�Y��I����E� � �C�C�CrC���s���Gid:\t(\d+)\t(\d+)\t(\d+)c������������������������|�������������������������������������}|���������������������|������������d���������\��}}}t����������j��������t ����������|������������t ����������|������������t ����������|������������������������S�r���)r���r���r����pgidsr����)rw���_gids_rerz��r%��r&��r'��s��� rD����gidszProcess.gidsf��r)��rC���r����rl��)8r?���r@���rA���r���� __slots__rx��r���r���r���r���r���r���r���r���r����r���r���r���r���r����rs���rK���getpidr���r ��r���r���r���r���� HAS_SMAPSr,��r-��r���r���r���r���r���r���r���r����HAS_CPU_AFFINITYr���r��r ���HAS_PROC_IO_PRIORITYr��r��r����r��r���r��r��r ��r}��r(��r-��rB���rC���rD���r���r���6��sJ�������������'�'�C�C�C�I�.��.��.�9��9��9������������_��B�����������_�����$��$������_�$� 3��3��3� 5��5��5� �������_��5��5��5�"�������_��0��)��)���_�)� �������_��� �w�~�~�m�i�b�i�k�k�1�2�2��E� � E�� E�� �� E�<��O��O���_�O���7��7���_�7���@��@��@���_�@���*��*���_�*���>��>���_�>�&���'� ��'�B�J�'?�@�@�"�� �#6�7�7�#���$8�9�9� ;�� ;�� ;�� �� ;�� ;�8�'����D� �A ��A �� ��A �F��F��F���_�F���#-�2�:�.G�#H�#H�@��@��@���_�@���*4�"�*�5H�*I�*I��5��5��5���_�5��������_��6��0��0���_�0���7��7���_�7����!� � 8�� 8�� �� 8��%�"�*�%H�I�I� 9�� 9�� 9�� 9�� � �� �� �� �&���B� � 3�� 3�� �� 3�� � B�� B�� �� B���� � �� �� �� �� �2��.��.���_�.���)��)���_�)�V���������_�� ��K��K���_�K���4��4���_�4���&�B�J�'D�E�E��D��D��D���_�D� ��&�B�J�'D�E�E��D��D��D���_�D��D��DrC���r���r���r.��)F)�r���� __future__r���r���r0��r����r���r6��r����r,��ro��r����sys� tracebackr��r���r���r���r���r���r ���r��r ���r���r���r���r ���r���r���r���r���r���r���r���r���r���r���r���r���r���r���r����_compatr���r���r���r ���r!���r"����version_infor���__extra__all__rU��rs���rK��r0��r1���hasattrr3��r2��rT��r����r)��r���getpagesizer����ro��r���� byteorderr���r��� AF_PACKETr;����IntEnumr����r:���r&���r'���r(���r)���r>����globalsr����__members__�STATUS_RUNNING�STATUS_SLEEPING�STATUS_DISK_SLEEP�STATUS_STOPPED�STATUS_TRACING_STOP� STATUS_ZOMBIE�STATUS_DEAD�STATUS_WAKE_KILL� STATUS_WAKING�STATUS_IDLE� STATUS_PARKEDr��r*���r+���r,���r-���r.���r/���r0���r1���r2���r3���r4���r���r\���rh���rr���rx���r��ry���r}���r��r����r����r����r����r����r����r����r����� Exception� print_excr����r�����resource�ImportErrorr�����CDLLr����r1���dirr����r ��r��r ��r%��r1��rA��rH��r[���net_if_addrsr`��rb��r���r���r���r���� disk_usager��r��rA��rE��rb��re��rp��r���rt��r~��r���r���rB���rC���rD����<module>rT�����sc ���� �%��$�������������� � � � ���������������������������� � � � �� � � � �� � � � �� � � � �� � � � ���������������#��#��#��#��#��#��"��"��"��"��"��"��������������������������#��#��#��#��#��#��)��)��)��)��)��)��!��!��!��!��!��!��������������������������$��$��$��$��$��$��"��"��"��"��"��"��������������+��+��+��+��+��+��$��$��$��$��$��$��$��$��$��$��$��$��'��'��'��'��'��'��"��"��"��"��"��"�� �� �� �� �� �� ��������������(��(��(��(��(��(��'��'��'��'��'��'��"��"��"��"��"��"��"��"��"��"��"��"��"��"��"��"��"��"��������������������������&��&��&��&��&��&��$��$��$��$��$��$��'��'��'��'��'��'���������������v����K�K�K�K��D� 6�� 6�� 6��"�.����G�N�N�+�i�b�i�k�k�9�:�:� ��w�t�%6�7�7����7�4�!8�9�9����6�8�8����b�j��&�&��!�:�!�#�#��� ���'�B�B�4���� ��)� ������<���G�G� �D�L��"+�S�S��1A�-B�-B�!C�E��E�M��#�G���<����O��O�������������T�\���������G�I�I���Z�+�,�,�,�� � � � � � "� � � � $� � � � � � � � !� � � � � � � �� � �"�� "� � � � � � � � � � � � � � !� � � � � � �����*� � ���K��K��K� L�� L����*� ������������ �J��<�<�<� >�� >� ���z�&�>�?�?���:�j�$�,�1G�"G�H�H��� ��J��J��J�K��K� � � �J������-�*?�!@�!@�@� B�� B� ���j���6��6��6��7��7��� �J�{�"��"��"� #�� #� ������( �� �� �$��$��$�&� �0��0�� ��0�0�!��� �� �� �� � K����!�!�!�!����K��K��K��I�����;� � �;�(:�;�;�C��c�J�J�I�I�I�K���� ���8� � � � � � � ����8��8��8��M�M�M��6�;�t�t�,�,�,�D��w�t�Y����8� 8�� 8�� 8�� 8���8����<������F�F�C�C��I�I�F�F�F�H��H��H�1��1��1�hwB��wB��wB�t2@��2@��2@�t �� �� � �����(�����:'��'��'�T=��=��=�*��7�>�>�;�<�<��3� ����=�>�>�3��������@��W�^�^�O�$�$��� �� �� �� ��������&�� �� �� �� �� �I�� �� �� �g��g��g��g��g��g��g��g�T��{�}�}��'��'��'��'� "��"��"�J�����4�� � �\��\��\��\�~#��#��#��#�Vn��n��n�b�����@V>��V>��V>�|�����$3��3��3�&M��M��M� !��!��!�@�����,�����*tD��tD��tD��tD��tD�f��tD��tD��tD��tD��tDs$����=M �� +M7�6M7�=N��+N2�1N2