找回密码
 注册
查看: 4258|回复: 2

psutil 的功能python实现一个服务器信息的简单监控

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-12-23 20:59:48 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 6 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-12-23 21:01:22 | 显示全部楼层
Example usages
% Q6 r: ~# p6 i2 O2 j8 r
7 W) m" B4 m3 ]! g/ W1 sCPU3 p" j, }! s* [' @$ ?/ M/ e3 {
>>> import psutil
  J8 }8 ?  W, I) B>>> psutil.cpu_times()
- m! h/ P8 ~5 @7 K8 r8 M9 Xscputimes(user=3961.46, nice=169.729, system=2150.659, idle=16900.540, iowait=629.59, irq=0.0, softirq=19.42, steal=0.0, guest=0, nice=0.0)8 U2 s0 p, R0 Y& ^' s
>>>
" M4 d: j9 y- |: [. ]>>> for x in range(3):, P) \6 K5 m2 T; B9 \
...     psutil.cpu_percent(interval=1)8 A) o9 {* F5 \* a0 V
...
, D9 `" P4 B1 q; u4.0( c% H: `2 X! H* t( z3 H" ~7 P6 V
5.9
( S( k$ L( k5 i" u) n2 v, L# T& q3.86 o9 p4 C; f# q) n7 S
>>>
# p! Y& C& g. K9 D>>> for x in range(3):
# ?* a8 N& x6 e; e...     psutil.cpu_percent(interval=1, percpu=True)
2 H, z5 a0 c+ t, ^. n7 f...8 A  z4 y) ]& o3 l9 I2 Q
[4.0, 6.9, 3.7, 9.2]
  {7 [, ?' |" y! C" |[7.0, 8.5, 2.4, 2.1]
# a; d. ^) A1 |4 ?8 p[1.2, 9.0, 9.9, 7.2]; {" K( p2 G! b% R
>>>
( N) P$ \3 J! H9 @! V1 _& V>>> for x in range(3):. s; R  n, w. R5 x1 S0 u$ ~
...     psutil.cpu_times_percent(interval=1, percpu=False)
7 A$ ~- b' n9 V, K; I$ H...
0 o1 O$ C$ @0 F' x" Dscputimes(user=1.5, nice=0.0, system=0.5, idle=96.5, iowait=1.5, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
- Y& j& J" [6 N* g- vscputimes(user=1.0, nice=0.0, system=0.0, idle=99.0, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
) N0 R' [' g4 |  zscputimes(user=2.0, nice=0.0, system=0.0, idle=98.0, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
$ W& n7 b! D8 U0 E( b' s>>>' w+ d5 e7 y5 t. v( h
>>> psutil.cpu_count()
5 }/ K- J* o5 C" ]4
# h2 C2 g* N; j>>> psutil.cpu_count(logical=False)
- ~; y; U  t/ ~: w. M26 t4 ]& _* f& S7 @  R
>>>( ]( n' k$ _# f  u3 g
>>> psutil.cpu_stats()
- U# }+ j4 Z1 E! T5 `& Mscpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)3 x: E" i' E8 V; p
>>>7 a) ]6 ^6 J. ]2 j
>>> psutil.cpu_freq()9 y1 e; ^  B% A! [7 e% C
scpufreq(current=931.42925, min=800.0, max=3500.0)2 w' ?) S& l  i" X3 J9 K
>>>
! n) r2 o( A) }0 k+ ^Memory4 Z2 m/ _+ [9 C0 u+ J# I" T  Q
>>> import psutil
0 I3 T8 P% e, Q1 r1 x>>> psutil.virtual_memory()
2 D; y% L# T) m0 v' Usvmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)
2 }% o  v% w6 ?4 ~% q( y+ b- {. E>>> psutil.swap_memory()" D7 ?& B# X  t" j* L# y
sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)4 m* }2 \: s, S7 l% N
>>>& Y  t* c# i" \3 o0 O* b! K. Z; }
Disks
# u: [1 ]% w! s7 E* V% |& T  i' M>>> import psutil
9 u# ^$ t4 Q, C8 c3 q; C>>> psutil.disk_partitions()2 V$ e3 R! B& @% M* D8 d" f2 q
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
. N6 \7 U7 {: \8 @: k sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]8 {  @, v3 Q9 ?2 [
>>>$ Z' K1 W, s) y* ^1 t! Z0 w
>>> psutil.disk_usage('/')
5 n. V# e0 I9 S; Vsdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
; s5 S: K6 B6 N" c6 {% U% F) J& s>>>9 i  u5 f6 `7 ^/ Y. v
>>> psutil.disk_io_counters(perdisk=False)) V- ^% `2 ~# g9 k1 ]" s* z6 k( U/ x
sdiskio(read_count=719566, write_count=1082197, read_bytes=18626220032, write_bytes=24081764352, read_time=5023392, write_time=63199568, read_merged_count=619166, write_merged_count=812396, busy_time=4523412)/ B' l( ^( k3 o, t/ L
>>>) o- b6 k% M0 o" I' G
Network2 ?, U2 m- T1 [  o
>>> import psutil6 b- u' O0 r" ?) r
>>> psutil.net_io_counters(pernic=True)
6 {7 K' M0 F! a' [- _{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),% l2 @9 U0 o' J7 n7 B4 w* n9 W9 o
'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}
( D0 q9 A( y9 }* a( d>>>+ |5 ?2 ^4 W9 F8 Q
>>> psutil.net_connections()
5 `$ j! S9 i; B% e$ f[sconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254),
7 n& y  g7 u  p1 D% E sconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING', pid=2987),( Z4 p  n# I$ f
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=60759), raddr=addr(ip='72.14.234.104', port=80), status='ESTABLISHED', pid=None),: M% K7 ^* T2 b7 C
sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=51314), raddr=addr(ip='72.14.234.83', port=443), status='SYN_SENT', pid=None)
3 F! X& }% G* c3 w" N- o$ X! V3 g ...]6 e; n& R4 p" h7 L( ^
>>>$ ~# O' B* \; G' `
>>> psutil.net_if_addrs()
, D/ J8 x$ ]: b% P0 w( ~! ]{'lo': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),6 E2 {8 O# s* j9 f# O  N
        snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
: j5 z. W4 n/ Z& p! q        snic(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],8 M' L1 Z/ z# G; K% X$ a; L
'wlan0': [snic(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
% h) g3 k* Q# W2 i$ O           snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),( J7 s& O) U# A! `
           snic(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
; Y, P9 x/ z/ z5 f>>>5 v# {( i  N' ~- T2 Y! ]8 ?
>>> psutil.net_if_stats()8 r6 c9 v6 m* ^' w
{'eth0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500),
+ x9 c7 \% x* w; q0 @/ ` 'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}) L) N( a" o/ \
>>>
$ m  k( R3 _+ j  O" USensors! M# I3 D8 i( s$ i1 X' x- ^/ F% f! {% A
>>> import psutil
# _. U  F. s$ u- A; o>>> psutil.sensors_temperatures()
' S; C1 u# K8 v7 n) e$ V{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],
- T; p) F) q3 E' V. b- w9 w 'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],
  {, t- z( M: z1 G' z" X 'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),
. s6 T$ p! Q9 T# h              shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0),
. S% F' ^% D/ a! B# ^              shwtemp(label='Core 1', current=52.0, high=100.0, critical=100.0),- L2 Z/ ]- y# A1 P  D3 {
              shwtemp(label='Core 2', current=45.0, high=100.0, critical=100.0),
( D3 J+ s& Y& I6 F              shwtemp(label='Core 3', current=47.0, high=100.0, critical=100.0)]}
+ e; c1 h1 ?- q% C! D# m>>>
/ q5 A3 s, _8 K, {; i>>> psutil.sensors_fans()1 I5 _' S8 I) ]& X
{'asus': [sfan(label='cpu_fan', current=3200)]}! X7 s: c6 s! F2 W" b$ v4 u
>>>
  o! d, Q7 h& j  L) |>>> psutil.sensors_battery()
  \' C* l0 @6 |; d+ J! G  msbattery(percent=93, secsleft=16628, power_plugged=False)
/ V5 P! M2 w- y; j3 `6 X>>>" {1 A! y+ j% C4 W* D8 o
Other system info, T# R0 s9 E9 F% F+ `8 ?
>>> import psutil
" u: ~- ?( o7 L( L; m1 A0 n- x% s>>> psutil.users()3 E7 y- c9 [9 S& h' ]$ z1 n
[suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),
$ E; a6 X1 [' ~# C  A0 @: Q1 | suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]. k+ Z6 X9 q, m0 E; [0 Q
>>>
& X+ \. w; c, x4 ?( g7 S1 E- B+ {>>> psutil.boot_time()% U0 f8 c3 N% u3 r/ k6 I# D7 p
1365519115.0
$ Y+ F) R- Q" m# e. f; A>>>
2 S3 i% g$ V, \# a9 i( hProcess management. n$ w9 g+ L. N
>>> import psutil- \3 z7 \4 d- R3 @, i3 W8 c/ [
>>> psutil.pids()1 _: k9 H7 i8 r3 l
[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215, 1216, 1220, 1221, 1243, 1244,4 E9 E  O+ I% v; s9 v
1301, 1601, 2237, 2355, 2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282,9 @6 y3 N+ R$ H, O2 E5 A
4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446,, Z; F2 V" u4 y: O* T
5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
! n0 c0 M% ]; O# A# ~>>>
9 @5 ^4 J0 [5 q& @>>> p = psutil.Process(7055)! k& D, y2 t) H2 O, `
>>> p.name(). i9 n8 S. G- T1 u" j
'python'
4 o+ N2 M2 X0 P; p0 r, @0 O>>> p.exe()! J, @- D+ h/ q$ {; o4 A/ ~
'/usr/bin/python'
' @1 U2 E4 M1 N% u>>> p.cwd()
# r4 S! Z# I5 `; k'/home/giampaolo'6 C8 ?5 _4 C9 C1 S: o
>>> p.cmdline()
, t$ S% d9 v; f# n- K['/usr/bin/python', 'main.py']$ J, a! R* M4 h- S) m
>>>" v) K+ Q% m5 W# @% X- ?
>>> p.pid
( W6 W+ |( o- L$ q( j7055
3 e+ u" ]4 E+ |- a+ i( l! @>>> p.ppid(), @& s: v/ l4 D4 O0 R. F4 [' [( _/ F& m
7054  t$ R1 P: q: {# w
>>> p.parent()
. u7 e, y  w+ M+ L8 ]2 |<psutil.Process(pid=7054, name='bash') at 140008329539408>+ H/ {4 g8 b/ O4 O1 N8 z) E
>>> p.children()' x+ }) o: ]$ o( B' T/ @! G
[<psutil.Process(pid=8031, name='python') at 14020832451977>,  j- ^7 V2 K( y9 A
<psutil.Process(pid=8044, name='python') at 19229444921932>]. E8 r% H) g8 L8 N3 @$ R
>>>
' U% U4 Q) T, x>>> p.status()
$ R5 m3 I6 Q/ e& |'running'
2 p( T" s, E) r% O>>> p.username()
; j, [5 I  N3 P7 x8 X. i'giampaolo'
2 z) P- d2 U' @0 N' {9 z& o1 ~$ R>>> p.create_time()
' ^! Q% T1 f+ h  b1267551141.50195312 w9 P, m2 I2 _& z7 w
>>> p.terminal()
" T7 K; @. n0 @3 B8 Q7 w' ^" C! e$ k'/dev/pts/0'
" K' U+ [& ]* x1 _2 S: q: q$ G& c>>>
- d1 E4 z* {: P>>> p.uids()
( l' M* O& w3 y" ?- h  hpuids(real=1000, effective=1000, saved=1000)
# B8 v& D7 X7 K4 g3 D, |' Z" k) j+ h>>> p.gids()
2 V  A3 \8 l, P/ K' Ppgids(real=1000, effective=1000, saved=1000)
5 J* }5 z. X) L  J7 X>>>& ?5 @6 ]* F7 A# _# R  e$ Z
>>> p.cpu_times()
- E. |1 d4 }' O& C0 f; c$ w" Jpcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1): }( K; X4 \* |; \1 t3 g
>>> p.cpu_percent(interval=1.0)( o$ T3 S+ _9 i1 X8 ?& M+ q1 ~. d" F
12.1
) t/ n2 B) [  T- j7 O/ X, d>>> p.cpu_affinity()+ b0 t7 v0 R" B6 [% o% Y$ H) a. O
[0, 1, 2, 3]* @; W, w2 {# a2 u
>>> p.cpu_affinity([0, 1])  # set+ ~) P5 K* \& x& K/ m) @7 G
>>> p.cpu_num()6 l# h! T6 P- `$ K# i2 G1 w
1& ^& x$ @7 F2 \. x
>>>
2 F7 S2 u3 E" E) N/ }7 L>>> p.memory_info()6 d9 H% G8 g* P
pmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)
% Y: _/ v- Z9 c7 s. v>>> p.memory_full_info()  # "real" USS memory usage (Linux, OSX, Win only)
  e: O# A9 Y* l0 T7 t; W" Ppfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0); [  y/ v2 m. b. j0 M9 N6 V# _3 x
>>> p.memory_percent()- P2 D& j$ d3 S" |# U
0.7823
( |6 N7 k% [9 Y* \1 H3 |>>> p.memory_maps()
; Y3 T/ Z' h+ ]! u' Y* P[pmmap_grouped(path='/lib/x8664-linux-gnu/libutil-2.15.so', rss=32768, size=2125824, pss=32768, shared_clean=0, shared_dirty=0, private_clean=20480, private_dirty=12288, referenced=32768, anonymous=12288, swap=0),
7 ]5 t$ U* Y, O5 A  j, s pmmap_grouped(path='/lib/x8664-linux-gnu/libc-2.15.so', rss=3821568, size=3842048, pss=3821568, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=3821568, referenced=3575808, anonymous=3821568, swap=0),$ f% g. k7 e$ b
pmmap_grouped(path='/lib/x8664-linux-gnu/libcrypto.so.0.1', rss=34124, rss=32768, size=2134016, pss=15360, shared_clean=24576, shared_dirty=0, private_clean=0, private_dirty=8192, referenced=24576, anonymous=8192, swap=0),3 G9 e1 Q" y; H; I% m4 e
pmmap_grouped(path='[heap]',  rss=32768, size=139264, pss=32768, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=32768, referenced=32768, anonymous=32768, swap=0),( F% r% h' L4 A* |
pmmap_grouped(path='[stack]', rss=2465792, size=2494464, pss=2465792, shared_clean=0, shared_dirty=0, private_clean=0, private_dirty=2465792, referenced=2277376, anonymous=2465792, swap=0),
+ _  e! M0 ?: t; q! {+ B. \ ...]
4 t1 r" P$ {) W" j>>>
) m( d9 \! ]! |  s. k: H) G>>> p.io_counters()7 w2 T+ F- ?: r; K; n
pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)# x& K. H/ q% l1 u) A
>>>
1 ~" k2 C$ m  B$ h# y0 E>>> p.open_files()0 m8 ]8 `: _. }. P. R
[popenfile(path='/home/giampaolo/svn/psutil/setup.py', fd=3, position=0, mode='r', flags=32768),
5 E3 K. Y) I  Q' S; R( s popenfile(path='/var/log/monitd', fd=4, position=235542, mode='a', flags=33793)]
" R$ z+ y* }, i# q>>>
, y5 f. n# M6 p# Y( m>>> p.connections()/ Q- j& v! l5 a  n# [, I# {" |
[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED'),' Q" H2 t1 z# J, i" O: B
pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING'),$ `6 \8 c0 ~1 f7 j, f6 v
pconn(fd=119, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=60759), raddr=addr(ip='72.14.234.104', port=80), status='ESTABLISHED'),/ t# D/ X- H9 M9 z
pconn(fd=123, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=51314), raddr=addr(ip='72.14.234.83', port=443), status='SYN_SENT')]
; o' i/ e# e: H* _5 n>>>0 s) p+ j+ F; B7 G4 ?
>>> p.num_threads()8 b. C. H" |; a
4
  `, i; i% ]- p. c2 `2 R6 a>>> p.num_fds()9 e/ c$ ^. \1 U) r: @
81 E, m% I5 U& u
>>> p.threads()5 k4 q; q0 a' Y7 L8 u0 I
[pthread(id=5234, user_time=22.5, system_time=9.2891),
- M% S: {/ h; J% Q: c. ^ pthread(id=5235, user_time=0.0, system_time=0.0),# {# J' a$ n) z4 K9 b' h2 b* n$ E
pthread(id=5236, user_time=0.0, system_time=0.0),3 h: ?  m) b. \& V1 f0 B2 V
pthread(id=5237, user_time=0.0707, system_time=1.1)]
4 s3 z& n4 X0 h( p>>>; U$ D4 H, r6 W* n
>>> p.num_ctx_switches()
6 D, I) @, S) P# ~' ]) r; E# {pctxsw(voluntary=78, involuntary=19)% k$ O/ ~) `* [
>>>
# Z$ o: R! b3 J0 k>>> p.nice()$ u* t: L% h& Q& o2 h& T' m
0
8 }$ s" T" s3 w* V8 m>>> p.nice(10)  # set
- ~% i# l& P  `>>>4 T7 U; V: i; C- {9 s$ P4 y
>>> p.ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
, e4 u9 ^( r% b& h1 e8 |  l>>> p.ionice()
7 G4 V# b2 y9 d! J4 B, X! Cpionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)
! N& B7 r7 F2 Y. M2 T- d5 v>>>
# c, i2 u% X  u: D+ l; O/ x9 M>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # set resource limits (Linux only)& E% X3 m( G: g9 I! Y  E1 |5 e1 W2 T
>>> p.rlimit(psutil.RLIMIT_NOFILE)6 n% C+ B! g- {/ B" c; ?! q) k( W
(5, 5)
$ r& n1 H" b  h  E: y* {" o8 s! p( D>>>2 @6 o! W% w2 W9 \' u+ @
>>> p.environ()% b. _" H3 z8 c( n: X- F! G
{'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',- b+ N( d1 F# F( j
'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'COLORTERM': 'gnome-terminal',
' [0 |, G1 o& w/ D' v- \' P$ x ...}
: [' _1 C  }* e- H7 l. k3 ^' V& w* h>>>% O( D6 e% i4 q
>>> p.as_dict()8 n$ b9 K7 `+ ~/ {5 i
{'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}
( o; S. Q' y% l& \& U2 n>>> p.is_running()8 W% S- K; x( l5 D
True
* l, @. P4 J6 B! y6 O$ `  j- ~>>> p.suspend()
% z3 f0 F, W2 b4 U6 V) L9 b( E4 z>>> p.resume()4 O+ G1 _+ d1 k* t% G! `
>>>. i- @  i4 r, [) C6 s: Z5 m
>>> p.terminate()
. l4 T7 v0 T; ]>>> p.wait(timeout=3)0 j/ `6 V. r! F1 j/ K$ m
0
7 ]7 [6 T3 A* n( Y, b>>>
+ y* d; Z+ y0 J5 d# }. z- t4 m% h: E>>> psutil.test()
/ y" q/ j+ n4 s' _0 iUSER         PID %CPU %MEM     VSZ     RSS TTY        START    TIME  COMMAND
5 @* ^' k) e2 ?5 I4 Y9 R/ K2 g7 vroot           1  0.0  0.0   24584    2240            Jun17   00:00  init. Y' t4 N; L+ ?- j
root           2  0.0  0.0       0       0            Jun17   00:00  kthreadd: F" l5 w# X; o
root           3  0.0  0.0       0       0            Jun17   00:05  ksoftirqd/01 C' M" M) Z6 }1 U7 p. N7 v6 w9 T! ]
...
& Z# ]. }/ \; Xgiampaolo  31475  0.0  0.0   20760    3024 /dev/pts/0 Jun19   00:00  python2.4
5 I" r& g; \& kgiampaolo  31721  0.0  2.2  773060  181896            00:04   10:30  chrome
8 v& h# w, ?5 A, froot       31763  0.0  0.0       0       0            00:05   00:00  kworker/0:1
: W7 P( @" q  L+ U' C5 ^8 m4 s7 m>>>" \3 G, U! v# J# `
Further process APIs
4 @( z3 ~7 i# O0 C$ r3 z>>> import psutil3 [8 |" p3 x, L
>>> for proc in psutil.process_iter(attrs=['pid', 'name']):
% R1 f2 U" k; p5 i, P* F...     print(proc.info)
7 _% D1 Z: z& p! \* e...
  K9 X6 W! g! S: e+ R* g# R( q{'pid': 1, 'name': 'systemd'}
0 e- s. V5 p& q* F( Q8 ^* j- r{'pid': 2, 'name': 'kthreadd'}
! B7 h. z& A1 l) ]' \{'pid': 3, 'name': 'ksoftirqd/0'}
# m/ K5 [: z2 _...
& _$ w& E0 I1 m; {>>>/ I6 M% u. E  O6 \
>>> psutil.pid_exists(3)
% q) v/ v. Y6 D. b+ b; rTrue
. n& J3 D1 j/ ~  i' v: B>>>! j: T4 u: ]) `4 _3 \$ [
>>> def on_terminate(proc):7 U2 j/ u/ I7 Q' T
...     print("process {} terminated".format(proc))/ o$ o" N9 X" C, Q* C5 ~' ]6 S
...
& d, ]1 s: y8 e7 F: X( v" L0 X2 p>>> # waits for multiple processes to terminate
2 }% o& s6 S) {3 `3 L>>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)
* S) E  |7 s, m; T9 q>>>7 o* R5 P9 B  d1 `5 a
Popen wrapper:* M1 Z& z$ E  r, n

9 V' q. t9 _5 d6 A3 c9 B$ S3 ]>>> import psutil
% o; F: c; ]1 r( R>>> from subprocess import PIPE
7 m  r: U+ C3 @! S* S/ d>>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE)
$ z, p" ^+ a5 M/ H' L1 k>>> p.name()6 E- V( u+ l8 A1 R; z# p
'python'
# I' w" h( c$ r7 w. O- q>>> p.username()2 o% _7 D9 t) Q5 |8 E, u
'giampaolo') ~+ D- p  x% p; }" K
>>> p.communicate()
/ s3 D, v- T" Z. f('hello\n', None)
, v0 q0 S, X7 w8 Q9 _& K>>> p.wait(timeout=2)
9 m( w( e+ P3 N5 a0# s! S+ K2 e0 z0 M0 w3 O
>>>
: @) ]- r! l" w& iWindows services: V* T9 W/ L) z$ b" G2 b
>>> list(psutil.win_service_iter())
+ n( ~6 F' {1 L[<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,
) h4 ?' o9 ~/ L <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,0 C! H, B6 L( Y, x' L
<WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,
5 f/ P! `- W9 M9 _, @+ ^ <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,$ i. r/ s7 w/ Z1 K3 g3 p% g
...]0 C  e: E. ]; u$ M! m
>>> s = psutil.win_service_get('alg')
5 s0 l  ^% f; f9 U1 T  Z) D1 t>>> s.as_dict()/ A3 T* T4 \$ L; E4 d: n4 b# u
{'binpath': 'C:\\Windows\\System32\\alg.exe',, H# i; q$ {  s" E5 a& z9 d5 H
'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',) [& {3 j" H' y1 q6 \( g
'display_name': 'Application Layer Gateway Service',
9 H* L4 I  A. c9 ` 'name': 'alg',/ T$ R. ?, ~, y+ P6 k- }! p  `/ E
'pid': None,
0 ?7 F8 n# v/ J7 v4 w1 C& Y 'start_type': 'manual',  Q7 B. Q) V! Z' \1 |/ }
'status': 'stopped',. j2 `% z0 ~1 j( f& q  Y5 f1 e8 I5 M
'username': 'NT AUTHORITY\\LocalService'}
, \% {- Y5 h$ z" w$ yOther samples

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-12-23 21:09:49 | 显示全部楼层
Installing using pip on UNIX
8 ?; ^2 q2 m: U! h
/ m$ _* q& l. ZThe easiest way to install psutil on UNIX is by using pip (but first you might need to install python header files; see later). First install pip:$ q6 K/ p7 h2 }: m) y; U
$ |* f+ V  C' e9 e. n
$ wget https://bootstrap.pypa.io/get-pip.py" ^1 t0 H! @2 k
$ python get-pip.py
) R# W$ [+ U* E' T' q- \1 e...then run:% |! x% I# n; ^5 G1 L

8 D$ V' Q# {" }& o$ pip install psutil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:33 , Processed in 0.032734 second(s), 33 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表