Files
Home-AssistantConfig/deps/psutil/__pycache__/_pslinux.cpython-34.pyc
T

279 lines
38 KiB
Plaintext
Raw Normal View History

2016-10-11 16:42:06 +00:00
î
¾ûW›Úã@sUdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddl Z ddl Z ddl
mZddl
mZddlmZddlmZdd lmZdd
lmZdd lmZdd lmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ddl m"Z"ddl m#Z#ddl m$Z$e
j%d¸kddl&Z&ndZ&ddddddd d!d"d#d$d%d&d'd(d)gZ'ej(j)d*ej*ƒƒZ+e,ed+ƒZ-e-rx6e.eƒD]%Z/e/j0d,ƒrVe'j1e/ƒqVqVWnej2d-ƒZ3ej2d.ƒZ4da5e$nd/Z6e
j7d0kZ8e$e
j9ƒZ:d1Z;ne&dkej<Z=n+e&j>d2ie?ej<ƒd3Z@e@j=Z=e&dkrLdZAdZBd4ZCdZDn,Gd5d6d6e&j>ƒZEeFƒjGeEjHƒi
ejId76ejJd86ejKd96ejLd:6ejMd;6ejNd<6ejOd=6ejOd>6ejPd?6ejQd@6ZRi ejSdA6ejTdB6ejUdC6ejVdD6ejWdE6ejXdF6ejYdG6ejZdH6ej[dI6ej\dJ6ej]dK6Z^dZ_dZ`dZadZbedLdMdNdOdPdQdRdSdTdUdVg
ƒZcedWdXdYdZd[d\d]d^d_d`g ƒZdedadbdcdddedfgƒZeedgdhƒZfediefjgƒZhedmdbdndodkdpdqdrdsdtdudlg ƒZiedvdwdxjjeijgƒƒZkdydzZld{d|Zme$r„d}d~Znn dd~Znd€dZodZpd„d…Zqd†d‡ZrerƒZsedˆd‰ƒZtyetƒauWn7evk
r$e jwƒedƒdddƒauYnXdŽdZxddZydd“Zzd”d•Z{dd—Z|d˜d™Z}dZ~ejZGdœddevƒZ€GdžƒZeƒZ‚Z„Z…ej†Z†Z‡Z‰Z‹ZGd¶ƒZdS)»zLinux platform implementation.é)ÚdivisionN)Ú defaultdict)Ú
namedtupleé)Ú_common)Ú_psposix)Ú
_psutil_linux)Ú
_psutil_posix)Ú
isfile_strict)Úmemoize)Úparse_environ_block)ÚNIC_DUPLEX_FULL)ÚNIC_DUPLEX_HALF)ÚNIC_DUPLEX_UNKNOWN)Úpath_exists_strict)Ú
supports_ipv6)Ú
usage_percent)Úb)Ú
basestring)Úlong)Ú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/proc/%s/smapsÚ
linux_prlimitZRLIMÚ
SC_CLK_TCKÚ SC_PAGE_SIZEi ÚlittleÚsurrogateescapeÚ
AddressFamilyÚAF_LINKéc@s(eZdZdZdZdZdZdS)Ú
IOPriorityrrr0rN)Ú__name__Ú
__module__Ú __qualname__rrrr©r5r5ú1/tmp/pip-build-hcyugf_y/psutil/psutil/_pslinux.pyr1bs r1ÚWZ01Ú02Z03Z04Z05Z06Z07Z08Z09Z0AZ0BÚsvmemÚtotalÚ availableÚpercentÚusedÚfreeÚactiveÚinactiveÚbuffersÚcachedÚsharedÚsdiskioZ
read_countZ write_countZ
read_bytesÚ write_bytesZ read_timeZ
write_timeZread_merged_countZwrite_merged_countÚ busy_timeÚ popenfileÚpathÚfdÚpositionÚmodeÚflagsÚpmemz"rss vms shared text lib data dirtyÚpfullmemÚussÚpssÚswapÚ
pmmap_groupedÚrssÚsizeZ shared_cleanZ shared_dirtyZ
private_cleanZ
private_dirtyZ
referencedZ anonymousÚ pmmap_extz addr perms ú cKst|d|S)rb)Úopen)ÚfnameÚkwargsr5r5r6Ú open_binary³srdcKs9tr)|jdtƒ|jdtƒnt|d|S)z¨On Python 3 opens a file in text mode by using fs encoding and
a proper en/decoding errors handler.
On Python 2 this is just an alias for open(name, 'rt').
ÚencodingÚerrorsÚrt)rÚ
setdefaultÚ FS_ENCODINGÚENCODING_ERRORS_HANDLERra)rbrcr5r5r6Ú open_text·srkcCs|jdtdtƒS)Nrerf)Údecoderirj)Úsr5r5r6rlÆsrlcCs|S)Nr5)rmr5r5r6rlÉscCstjdjS)NZpsutil)ÚsysÚmodulesrr5r5r5r6Úget_procfs_pathÍsrpcCspt|tƒst|ƒtj|ƒ}|jdƒd}|jdƒrlt|ƒ rl|dd}n|S)zWrapper around os.readlink().Úrz
(deleted)Né
iöÿÿÿ)Ú
isinstancerÚAssertionErrorÚosÚreadlinkÚsplitÚendswithr)rQr5r5r6rvÑs rvcCs~idtj6dtj6dtj6}||tjtjBtjB@}|tj@rh|jdddƒ}n|jddƒ}|S)wzw+Úarzr+)ruÚO_RDONLYÚO_WRONLYÚO_RDWRÚO_APPENDÚreplace)rUZ modes_maprTr5r5r6Úfile_flags_to_modeås $
rcCsLy)tdƒ}t|jƒƒSWdQXWnttfk
rGdSYnXdS)Ns#/sys/block/sda/queue/hw_sector_sizei)raÚintÚreadÚIOErrorÚ
ValueError)Úfr5r5r6Úget_sector_sizeïs
r‡c
Ctd|ƒ#}|jƒjƒdd}WdQXdddddd d
g}t|ƒ}|d krx|jd ƒn|d
kr”|jdƒn|dk|jdƒntd|ƒatS)zÙReturn 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]]])
z%s/statruserÚniceÚsystemZidleZiowaitZirqZsoftirqéZstealé ZguestrrZ
guest_niceÚ scputimes)rdÚreadlinerwÚlenÚappendrr)Ú procfs_pathr†ÚvaluesÚfieldsZvlenr5r5r6Úset_scputimes_ntupleýs"    r”z/procrzuser system idlegcCtjƒ\}}}}}}}||9}||9}||9}||pKd9}|dkrdd}nd}}}tdtƒƒ} | D]õ}
|dk|
jdƒt|
jƒdƒd}q|dkr|
jdƒrt|
jƒdƒd}q|dkr=|
jdƒr=t|
jƒdƒd}q|dkrX|
jdƒsg|
jd ƒrt|
jƒdƒd}qqWWdQXg} |dk| jd
ƒd}n|dk| jd ƒd}n|dk| jd ƒd}n|dkr| jd
ƒd}n| rfddj| ƒt | ƒdkrIdndf} t
j | t ƒn|||}
||}t
||
|ddƒ}t||
||||||||ƒ
S)Nrz
%s/meminfosCached:risActive:s Inactive:s
MemShared:sShmem:rKrHrIrLz6%s memory stats couldn't be determined and %s set to 0z, ZwasZwereÚ_round)ÚcextÚ
linux_sysinfordrpÚ
startswithrrwrÚjoinrÚwarningsÚwarnÚRuntimeWarningrrB)rCrGrJrLÚunit_multiplierrKrHrIr†ÚlineÚmissingÚmsgZavailrFrEr5r5r6Úvirtual_memory#sV!


  
 ' 
  
  
  
  "
c Ctjƒ\}}}}}}}||9}||9}||}t||ddƒ}ytdtƒƒ}WnOtk
}z/dt|ƒ}tj|t ƒd} }
WYdd}~XnËX|Âd} }
|D]ˆ} | j
dƒrt | j dƒdƒdd } n3| j
d
ƒrAt | j dƒdƒdd }
n| dk |
dk PqÕWd }tj|t ƒd} }
WdQXt
j||||| |
ƒS) Nr•rz %s/vmstatzP'sin' and 'sout' swap memory stats couldn't be determined and were set to 0 (%s)rspswpinó rispswpoutzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rr—rrdrpr„Ústrršrr˜rrwrZsswap) rrCrGrFrEr†Úerrr¡ÚsinZsoutrŸr5r5r6Ú swap_memory_s2!





$$c
Csxtƒ}t|ƒtd|ƒ}|jƒjƒ}WdQX|dttjƒd}dd|}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.
z%s/statNrcSs g|]}t|ƒtqSr5)ÚfloatÚ CLOCK_TICKS)Ú.0r>r5r5r6ú
<listcomp>s zcpu_times.<locals>.<listcomp>)rpr”rdrwrrÚ_fields)rr†rr“r5r5r6Ú cpu_timesŠs 
r­c Ctƒ}t|ƒg}td|ƒ}|jƒxu|D]m}|jdƒr=|jƒ}|dttjƒd}dd|}t|Œ}|j |ƒq=q=W|SWdQXdS)zfReturn a list of namedtuple representing the CPU times
for every CPU available on the system.
z%s/statscpurcSs g|]}t|ƒtqSr5))r>r5r5r6¨s z!per_cpu_times.<locals>.<listcomp>N)
rpr”rdr˜rwrrr)rÚcpusr†rr“Úentryr5r5r6Ú
per_cpu_timesšs 


  cCs
ytjdƒSWnõtk
rd}tdtƒƒ:}x0|D](}|jƒjdƒrD|d7}qDqDWWdQX|dktjdƒ}t dtƒƒG}x=|D]5}|j
d ƒd}|j |ƒ|d7}WWdQXn|dkrdS|SYnXdS)
z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNrz
%s/cpuinfos processorrNzcpu\dz%s/statr_) ruÚsysconfr…rdrpÚlowerr˜ÚreÚcompilerkrwÚmatch)Únumr†Úsearchr5r5r6Úcpu_count_logical®s$

 
 c Ci}i}tdtƒƒ¯}|D]}|jƒjƒ}|s}d|krtd|krt|d||d<ni}q)|jdƒs|jdƒr)|jddƒ\}}t|ƒ||<q)q)WWdQXt|jƒƒdS)z2Return the number of physical cores in the system.z
%s/cpuinfos physical ids cpu coress :rN) rdrpÚstripr³r˜rwrÚsumr)ÚmappingZ current_infor†ÚkeyÚvaluer5r5r6Úcpu_count_physicalËs
   r¿c CtdtƒƒÊ}d}d}d}|D]¦}|jdƒr]t|jƒdƒ}nP|jdƒr…t|jƒdƒ}n(|jdƒr­t|jƒdƒ}n|dk r/|dk r/|dk r/Pq/q/WWdQXd}tj||||ƒS)Nz%s/statsctxtrsintrssoftirqr)rdrpr˜rrwrZ scpustats)r†Z ctx_switchesZ
interruptsZsoft_interruptsrŸZsyscallsr5r5r6Ú cpu_statsäs"
 c@seZdZdS)Ú_Ipv6UnsupportedErrorN)r2r3r4r5r5r5r6s c@sseZdZdZddZddZddZdd Zd
d d Zd
d
dZ d
ddZ
d
S)Ú ConnectionsawA 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
cCs dtjtjf}dtjtjf}dtjtjf}dtjtjf}dtjdf}i |||||fd6||fd6|fd6|fd6||fd6|fd6|fd6|fd6||||fd 6||fd
6||fd 6|_d|_dS) NZtcpÚtcp6ZudpÚudp6ÚunixÚallÚtcp4Úudp4ÚinetZinet4Zinet6)ÚsocketÚAF_INETÚ SOCK_STREAMÚAF_INET6Ú
SOCK_DGRAMÚAF_UNIXÚtmapÚ _procfs_path)ÚselfrÇr5r5r6Ú__init__s$







zConnections.__init__cCsttƒ}tjd|j|fƒD]Ó}y td|j||fƒ}Wnatk
}zA|jtjtj fkr…w)n|jtj
krw)nWYdd}~Xq)X|j dƒr)|dddd}||j |t
|ƒfƒq)q)W|S)Nz%s/%s/fdz %s/%s/fd/%szsocket:[rréÿÿÿÿ)rÚlistruÚlistdirrÑrvÚOSErrorÚerrnoÚENOENTÚESRCHÚEINVALr˜rr)ÚpidÚinodesrRÚinoder¥r5r5r6Úget_proc_inodes%s # $zConnections.get_proc_inodescCsi}x€tƒD]u}y|j|j|ƒƒWqtk
r„}z2|jtjtjtjtjfkrrnWYdd}~XqXqW|S)N) ÚpidsÚupdaterßr×ÚEPERMÚEACCES)r5r5r6Úget_all_inodes<s!zConnections.get_all_inodesc
CsN|jdƒ\}}t|dƒ}|s.fStrF|jdƒ}n|tjktr†tj|tj |ƒdddƒ}qDtj|tj |ƒƒ}n tj |ƒ}ygttjtj
t j dt j
d|ƒŒƒ}n-tjtj
t j dt j
d|ƒŒƒ}Wn'tk
rCtƒs<tnYnX||fS) 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
úÚasciiNrz>4Iz<4IrÔ)rwrrÚencoderÊÚ
LITTLE_ENDIANÚ inet_ntopÚbase64Ú b16decoderÍÚstructÚpackÚunpackr…r)ÚaddrÚfamilyÚipÚportr5r5r6Údecode_addressNs0+$%
  zConnections.decode_addressNcc|jdƒr&tjj|ƒ r&dSt|dtƒc}|jƒxOt|dƒD]>\}}y8|jƒdd\
} }
} } } } } } } }
Wn+t k
t
d|||fƒYnX|
|k||
d\}}n d \}}|dk r||krqUqU|t j kr0t
| } n tj} y(|j|
|ƒ}
|j| |ƒ} Wntk
rxwUYnX||||
| | |fVqUWWdQXdS)
z.Parse /proc/net/tcp* and /proc/net/udp* files.Ú6NÚ bufferingrrrz,error while parsing %s; malformed line %s %rr)NrÔ)rxrurQÚexistsrkÚBIGGER_FILE_BUFFERINGrŽÚ enumeraterwr…Ú RuntimeErrorrÊÚ TCP_STATUSESrÚ CONN_NONErô)ÚfilerñÚtype_rÝÚ
filter_pidr†ÚlinenorŸrÚladdrÚraddrÚstatusrÞrRr5r5r6Ú process_inet„s2"
8
  
 
zConnections.process_inetccs]t|dtƒE}|jƒx1|D])}|jƒ}y)|dd\}}}}} }}
Wn:tk
rd|kw&ntd||fƒYnX|
|k||
} n d g} | D]„\} }
|dk || kt|ƒdkr|d }nd }t| ƒ} d}tj }|
|| |||| fVWq&WWdQXdS)
zParse /proc/net/unix files.rörér_z)error while parsing %s; malformed line %rNrrÚ)NrÔ)
rkrwr…rrr)rÿr†ÚtokensrÚpairsrÜrRrQrrr5r5r6Ú process_unix«s2

 )
  
 
  zConnections.process_unixc
C||jkrAtd|djdd|jƒfƒntƒ|_|dk ru|j|ƒ}|sgSn |jƒ}tƒ}x|j|D]ø\}}}|tj tj
fk|j d|j|f|||d|ƒ}n(|j d|j|f||d|ƒ}xx|D]p\} }}}
} } }
|r^t
j| |||
| | ƒ}n!t
j| |||
| | |
ƒ}|j|ƒqWq˜Wt|ƒS)Nz+invalid %r kind argument; choose between %sz, cSsg|]}t|ƒqSr5)Úrepr)r>r5r5r6Ðs z(Connections.retrieve.<locals>.<listcomp>z %s/net/%srÿ)r…r™rpÚsetrÊrr rÚpconnZsconnÚaddrÕ)ÚkindrÜÚretr†ÚlsrRrrrZ bound_pidÚconnr5r5r6ÚretrieveÍs4,    "  zConnections.retrieve) r2r3r4Ú__doc__rÓrr rr5r5r5r6s
    6'"rÂcCs
tj|ƒS)z$Return system-wide open connections.)Ú _connectionsr)rr5r5r6Únet_connectionsñsrcCsRtdtƒƒ}|jƒ}WdQXi}x|ddD] }|jdƒ}|dksrtt|ƒƒ|d|jƒ}||ddjƒjƒ}t|dƒ}t|dƒ}t|dƒ} t|dƒ}
t|dƒ} t|d ƒ} t|d
ƒ}
t|d ƒ}| || || |
|
|f||<q?W|S) zsReturn network I/O statistics for every network interface
installed on the system as a dict of raw tuples.
z
%s/net/devNr0rrrrrré ) rkrpÚ readlinesÚrfindrtr
rwr)r†ÚlinesÚretdictrŸZcolonÚnamer“Z
bytes_recvZ packets_recvZerrinZdropinZ
bytes_sentZ packets_sentZerroutZdropoutr5r5r6Únet_io_countersös&  rcCsittj6ttj6ttj6}tƒjƒ}i}xO|D]G}tj |ƒ\}}}}||}t
j ||||ƒ||<q@W|S)z)Get NIC stats (isup, duplex, speed, mtu).) r
rZ DUPLEX_FULLrZ DUPLEX_HALFrZDUPLEX_UNKNOWNrÚkeysÚ net_if_statsrZ snicstats)Z
duplex_mapÚnamesrrZisupZduplexÚspeedZmtur5r5r6rs




 rcCdd}i}|ƒ}tdtƒƒ}|jƒ}WdQXx…|D]}}|jƒ}t|ƒ}|dk|d}t|dƒ} tt|dd ƒ\
}
} } }
}}}}}}|d kr|d}tt|dd ƒ\ } }
} } }
}}}}}}nd|d
kro|d}tt|ddƒ\} } }
}d } }}
}}ntd |ƒ||krJ| t} |t}| |
| || ||
||f ||<qJqJW|S)
zcReturn disk I/O statistics for every disk installed on the
system as a dict of raw tuples.
c Sg}tdtƒƒ}|jƒdd}WdQXxwt|ƒD]i}|jƒ\}}}}|djƒ|j|ƒqE| |dj|ƒ rE|j|ƒqEqEW|S)Nz
%s/partitionsr0r)rkrprÚreversedrwÚisdigitrr˜)Ú
partitionsr†rrrr5r5r6Úget_partitions*sz(disk_io_counters.<locals>.get_partitionsz %s/diskstatsNérr0rérrz!not sure how to interpret line %r) rkrprrwrrÚmapr…Ú SECTOR_SIZE)r$rr#r†rr“Z
fields_lenrZreadsZ reads_mergedÚrbytesZrtimeZwritesZ
writes_mergedÚwbytesZwtimerrOr5r5r6Údisk_io_counters%s4  
   
: 
= 
% 

r+Fc Cs0tƒ}tdtƒƒx}xn|D]f}|jƒ}|jdƒs]|j|jƒƒq&|jdƒd}|dkr&|jdƒq&q&WWdQXg}tjƒ}x|D]y}|\}} }}
|dkd}n|s|dk||krqnt j
|| ||
ƒ} |j | ƒW|S) z7Return mounted disk partitions as a list of namedtuplesz%s/filesystemsZnodevú rZzfsNÚnoner) r rkrpr˜r
rwrÚdisk_partitionsrZ sdiskpartr) Zfstypesr†ZfstypeÚretlistr#Ú partitionZdeviceZ
mountpointÚoptsÚntupler5r5r6r.ls* 
   
   r.c Cs”g}tjƒ}x{|D]s}|\}}}}}|s@qn|dksX|dkrad}ntj||psd||ƒ}|j|ƒqW|S)z:Return currently connected users as a list of namedtuples.z:0.0z:0Ú localhostN)rÚusersrZsuserr) r/ZrawlistÚitemrˆÚttyÚhostnameZtstampZ user_processÚntr5r5r6r4s 
 r4c Csytdtƒƒ`}xC|D];}|jdƒrt|jƒjƒdƒ}|a|SqWtdtƒƒWdQXdS)zAReturn the system boot time expressed in seconds since the epoch.z%s/statsbtimerz!line 'btime' not found in %s/statN)rdrpr˜rwÚ BOOT_TIMErú)r†rr5r5r6Ú boot_timeŸs
r:cCs#ddtjttƒƒƒS)z7Returns a list of PIDs currently running on the system.cSs(g|]}|jƒrt|ƒqSr5)r"r)r>r5r5r6³s zpids.<locals>.<listcomp>)rurrpr5r5r5r6±scCs
tj|ƒS)z&Check For the existence of a unix pid.)rÚ
pid_exists)r5r5r6r;sr;cs%tjˆƒfddƒ}|S)zlDecorator which translates bare OSError and IOError exceptions
into NoSuchProcess and AccessDenied.
cyˆ|||ŽSWnŽtk