找回密码
 注册
查看: 4257|回复: 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
$ B# q, j. T7 x& s; x; H' W8 B1 H' {; K9 d! m
CPU( L3 d$ `7 I. {
>>> import psutil0 M$ }7 v0 H9 E) h) q/ n0 C& Q; [
>>> psutil.cpu_times(), |& z( X- g8 u0 P
scputimes(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)9 L2 u% k+ d2 K; G5 q
>>>
9 P, s4 G1 u6 _( m5 P>>> for x in range(3):9 D4 y' C+ e3 X: Q
...     psutil.cpu_percent(interval=1)+ `6 T& V( v4 _  M6 a
...+ B- P! w2 t( J7 m) ~9 I1 Q
4.0
( f, i7 z$ _$ l) \  I9 O. Q' t5.90 l- i/ I: D3 v) d5 ~, Q9 m
3.8
3 A7 |) E& t4 O& a' b. _& S>>>: F# a1 W- |# P
>>> for x in range(3):
) \& S2 W) T: Q/ V# ~...     psutil.cpu_percent(interval=1, percpu=True)( m% z# c, F' N9 S  `6 a9 S
.../ q+ F. n" f; d) u* U
[4.0, 6.9, 3.7, 9.2]
5 g* b+ m8 T% ~6 u- s[7.0, 8.5, 2.4, 2.1]
6 \1 W/ i* F# q8 k* k+ r6 U[1.2, 9.0, 9.9, 7.2]3 V- c- C, }) D% z
>>>2 `/ u1 P9 H" k, D0 q! m1 x9 E- q
>>> for x in range(3):
# b6 S7 }8 b9 e2 r( g: F...     psutil.cpu_times_percent(interval=1, percpu=False)
9 r/ v# e! y3 r9 J+ l...! Q- a4 i/ u2 c& X
scputimes(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)
  r' F6 k- `6 B* B- A6 dscputimes(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)! P2 T" G6 L7 K# y  d  G
scputimes(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)
3 h9 H6 o+ I. o6 F  _$ z( r; Y>>>; m* C# W9 \+ t4 g
>>> psutil.cpu_count(), X* P% u# F5 c! _  a0 F
4
! u2 `9 A; F$ m5 R- K5 a0 G2 v>>> psutil.cpu_count(logical=False)
8 \6 M( w* h- h2( ]" x' |+ o1 r" u
>>>
; N* \! \$ `! J0 T>>> psutil.cpu_stats()
6 c' ^5 m! ~3 ~scpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)
" h7 |1 b; h! q# u" z0 A  F>>>
; w* U) Y/ f! `9 a: k$ \. G>>> psutil.cpu_freq()
$ C% d3 t. o. c6 T: V( Y) m% iscpufreq(current=931.42925, min=800.0, max=3500.0)
% r, }4 n1 E* v" Y>>>) j. m! \# Y5 R- l2 j* o
Memory5 i4 o& \5 \- U, N' c8 j
>>> import psutil
3 B. e: V, T- p% y5 D4 i>>> psutil.virtual_memory()
" Y/ j) v- a* e3 A; r9 G. ?3 @8 Gsvmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)4 N' L. u0 w2 Y8 K3 H- i
>>> psutil.swap_memory()
! k% V  M7 X5 M/ ?8 }sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)& c, u# {+ J" l+ C, i4 q
>>>
5 z3 V( j. }5 b+ i# n9 FDisks
1 T1 B5 W5 n6 r2 d3 L0 c$ K>>> import psutil% G+ f8 X( J+ z# g" V# ]7 I# _
>>> psutil.disk_partitions()
7 z* P: H' B: b8 ^& G- w[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
8 ~: D; x; M9 r2 R$ ` sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]
0 O# l- b# S; W6 _>>>
1 K( ~, c$ Y/ D+ j& Q2 S$ g3 J0 x. V>>> psutil.disk_usage('/')
5 T9 E* w7 Y8 C' P3 b0 d* ^" psdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
, e- A3 t* J. y3 @3 b' |9 v>>>
5 w. p0 w* O: ^# j9 j" \, K>>> psutil.disk_io_counters(perdisk=False)5 ]4 I) \+ W# {4 C$ J5 l
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' K# Y" t0 H>>>
: r5 a) J% q; V2 Y* R; Y# dNetwork
' ?$ @/ D" _' G3 I4 h>>> import psutil
& U3 S/ m0 E! o5 D>>> psutil.net_io_counters(pernic=True)
1 a: m. N! k. i" o{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),
; v9 N" \- p9 [  P& r3 O 'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}& e/ D& U: }* p- q, M
>>>! q# R  }3 b6 @' q/ E8 G( o
>>> psutil.net_connections()6 u  g0 b6 Y) [5 K, h3 M( q
[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),8 C* _3 _2 K, k$ Y
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),# e, \4 h+ Q) {! T+ S
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),4 u  k9 l; Y  {; c! x" {
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)
0 ~* D7 H6 K/ F( v+ L ...]
: I3 \: ]# {8 O) A>>>) ]" r: N( b! b! _" s! t& ?" y& F% {* B
>>> psutil.net_if_addrs(), y" J+ A1 Y3 b$ r7 z
{'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 O+ s& Q8 K" q- r* G
        snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
( [5 l5 A, T8 L! `5 ^        snic(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],7 q+ ?4 y4 G+ b% ^: s0 X  \3 M
'wlan0': [snic(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
0 \5 D- m$ s# l$ P+ C* `6 K           snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
' I) e* y! S! T& u3 |  q5 x7 _           snic(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
. q* N  Z) P+ m  u4 L; P) j/ t>>>
3 V+ h6 L4 m2 a9 [6 c>>> psutil.net_if_stats()
7 ~5 p) y1 Y7 I$ g{'eth0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500),
* O, L9 [) V; }1 D' a! s 'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}. @4 u6 D3 N* Q& B2 i
>>>9 r; `# |$ X* j4 Y- h
Sensors& k1 O$ z0 x+ f- ]8 t# X; c% I
>>> import psutil
" J4 Y. ~9 J9 {  n6 G>>> psutil.sensors_temperatures()' w, d% N* _. Y$ F2 ?( |
{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],- v: d  [9 O, {, C+ a5 H0 O
'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],) t0 u" C# t$ W
'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),2 c& u/ i" J0 V( V( K6 \
              shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0),
# L" R+ K  x0 a7 x2 D! ^" W5 o              shwtemp(label='Core 1', current=52.0, high=100.0, critical=100.0),
9 W2 D, w* S3 o9 M7 b+ V( E! s, i              shwtemp(label='Core 2', current=45.0, high=100.0, critical=100.0),
; L$ m( q, N) l& I9 k1 j              shwtemp(label='Core 3', current=47.0, high=100.0, critical=100.0)]}3 n1 M$ W6 i4 B$ Z& D0 O
>>>
5 O1 I& Q" C* M>>> psutil.sensors_fans()
6 w7 `$ U' |, X{'asus': [sfan(label='cpu_fan', current=3200)]}6 W! J3 y3 u& l( ~; y
>>>, _3 `# f; g) U+ N- H
>>> psutil.sensors_battery()* ~7 W% K0 \; G7 T
sbattery(percent=93, secsleft=16628, power_plugged=False)( }4 G1 H$ f/ Q' H9 ?( I7 V; ~
>>>. w- J; G% J# n+ p0 c
Other system info
3 Q2 X/ S' f- Z0 D- g" Z+ Y: K>>> import psutil  T: N1 e& I) e! C4 ^7 E! e
>>> psutil.users()$ j! F4 o3 G9 v7 x# {) @2 f
[suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),
3 R2 E' Z! m. k; P) i; A  H) E suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]: D, U6 U9 \  C5 N
>>>
+ o7 P9 B8 A: Q' R7 b; a3 R>>> psutil.boot_time()+ \7 V! I: u' c! [2 A6 |" Z
1365519115.0* k* v( Q: w/ h  ?2 X
>>>; Y' k. b1 E* a( j( I
Process management
" j- e! R! E  U+ B>>> import psutil0 B+ i5 S( c: Z  f: \! M
>>> psutil.pids()' _, w' e: U5 C  k6 f3 H
[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215, 1216, 1220, 1221, 1243, 1244,9 \, _- N( \7 j5 y) ?! @9 H* {
1301, 1601, 2237, 2355, 2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282,, l; G/ W4 O8 N9 |6 t- s' A( C/ i
4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446,/ _& u, A4 e5 x* }
5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
8 Y5 b6 A1 D5 W) L5 k>>>
1 o& N2 B# W! ~5 s& }1 i& u. I>>> p = psutil.Process(7055)1 W, i( y* t" Z/ U( b# q
>>> p.name()
0 c0 P2 @4 M8 U) t5 r4 a, y'python'
6 ^7 U, B7 b" G, E+ G>>> p.exe()! `0 y4 \" B% _
'/usr/bin/python'% y2 \* N# z! ]& h
>>> p.cwd()0 s+ c( ]0 a9 B1 _3 g( [* @
'/home/giampaolo'
, _6 t% x' U8 N/ v% v& ~2 l% X>>> p.cmdline()4 c  m$ t. i* H, i& j3 Y
['/usr/bin/python', 'main.py']
$ \' u6 d+ q2 b# m>>>5 k% P# S; }: v! S
>>> p.pid) G* H9 `' v/ W3 q6 d* P* u" M
7055
: C& q9 o! X2 [0 w>>> p.ppid(), F/ F0 s7 ]+ b. p8 s  i7 y
70547 D0 m! K/ A' V* G& t) _2 j8 H* a
>>> p.parent()" L( e7 w3 S2 c; w/ P# Z9 H
<psutil.Process(pid=7054, name='bash') at 140008329539408>
% x8 Q  a4 A* u1 d7 b6 u& k>>> p.children()' {: Y- W) D5 f* u6 \" A
[<psutil.Process(pid=8031, name='python') at 14020832451977>,, R7 c3 M& L9 [0 o0 @2 ~; s& V: }
<psutil.Process(pid=8044, name='python') at 19229444921932>]4 k7 r6 C4 o# y/ e8 Z4 D9 c' s
>>>
& j4 \9 d: Y7 a7 I>>> p.status()* ?* w2 j' z% C8 ?6 J
'running'
+ a9 L) w  W8 Q  O; F>>> p.username()# Y# K: q% o6 D. ?2 Y6 f
'giampaolo'; q1 ?7 z- _. v2 E. Z& a; [
>>> p.create_time()
% g& G& W6 P, P1267551141.5019531
- h) Y6 @* ?- f>>> p.terminal()
1 D, y. n9 _, c; }'/dev/pts/0'
! x# w: Y/ a: E8 W% H7 K>>>+ Q+ t' D0 _) S; d% T0 w; x
>>> p.uids()
5 X$ Q3 [1 D" P" Qpuids(real=1000, effective=1000, saved=1000)4 U+ ~) x  f: o* q
>>> p.gids()8 E7 O0 K5 B% \, Y
pgids(real=1000, effective=1000, saved=1000)
% [: k$ b) H8 \  n5 F% h) Q>>>- I5 k6 c: n: l
>>> p.cpu_times()
$ R2 s6 x1 g3 o! g  K8 x9 x9 ypcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1)) P: A; |" V- b& K
>>> p.cpu_percent(interval=1.0)# X& a( m% \" u2 ~
12.1
4 I: j- E% i7 d1 [9 ]& Y>>> p.cpu_affinity()/ i5 O2 s, h0 C- k
[0, 1, 2, 3]
1 q  b. N4 }- b* r/ u>>> p.cpu_affinity([0, 1])  # set
) z, U9 x: T1 o: t- R+ {  o1 ~7 M# M>>> p.cpu_num()
5 E* g* s: t8 I& n/ l, ~) \18 V& {" A! ]9 @8 D4 w
>>>+ ]3 V# n3 O$ I7 j
>>> p.memory_info()
! K* k& f/ S# I% i% a, Y/ z6 bpmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)5 a/ d7 P6 x  P, V$ n' M
>>> p.memory_full_info()  # "real" USS memory usage (Linux, OSX, Win only)
% e1 y3 L$ \/ m1 D/ [* U& Epfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0)
8 B2 n2 w6 ?5 x# r" N; U>>> p.memory_percent()
1 w4 m- \. h$ k$ L7 ^- x, ~8 V4 `5 d0.7823
8 A$ ~+ S) u/ t4 Z& x$ p- P7 C>>> p.memory_maps()$ z  O' g) [$ a) V0 \( q
[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),
3 Z% F5 T4 W+ t- m% E 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),' b0 E9 g( k0 b4 p
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),
1 f9 U& |% Q' x6 F4 U6 T, N 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),
1 N- K5 r" j9 E5 ^0 f 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),( c* N% s/ Z- C0 `# p6 P, Z
...]
* F; R; A7 S8 i7 R$ z>>>9 U8 `' |: d7 V# }! `: o$ h
>>> p.io_counters()$ X, f  `4 {$ S; b0 I9 u" Q
pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)
( j; E5 {+ N: I% Q6 y. r9 ~# |>>>8 V3 D% w# R& {/ n2 I
>>> p.open_files()
8 R6 W8 C2 J& W' g6 H[popenfile(path='/home/giampaolo/svn/psutil/setup.py', fd=3, position=0, mode='r', flags=32768),
( n  b  B& \( Z! {) V# I) @/ u popenfile(path='/var/log/monitd', fd=4, position=235542, mode='a', flags=33793)]- H, a7 u7 j3 ]8 R# h: w
>>>8 e" Z8 R; s0 t( E+ \
>>> p.connections()
. H* V& ]) G: M" {3 E" N0 S7 ?( S[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' j. P4 \( r) y- c
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'),
" V3 [) A( ^& L& D; }# o  w( V, f+ B5 i7 O 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'),7 Z! z5 X9 m! U0 d
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')]
5 K, i( R3 c+ e7 S2 |>>>3 r% x  G6 E1 ~: [
>>> p.num_threads()5 I: f- J( t& `" K
46 u. i/ @, {2 k$ T5 ^
>>> p.num_fds()+ u2 ]* _* W. u) ?; n, j0 k$ z) R
8% X. ]% O' N1 s
>>> p.threads()
( @8 |3 q! q, m5 X" e[pthread(id=5234, user_time=22.5, system_time=9.2891),
  f6 j: d7 \! k6 l pthread(id=5235, user_time=0.0, system_time=0.0),/ e& c  `" i4 [, n8 f4 B
pthread(id=5236, user_time=0.0, system_time=0.0),
" M  f- Y! W8 [/ E3 p* F pthread(id=5237, user_time=0.0707, system_time=1.1)]
; l9 Y$ t: N# _! P>>>3 ~' S; h; S0 C5 Y% \
>>> p.num_ctx_switches()
1 E3 y! G! p  Q  Z+ a! ]9 e4 j) ~  ypctxsw(voluntary=78, involuntary=19)
, u6 Z/ @) N" J+ k, U  k>>>3 t! d' X& z/ p# v+ B% j+ S5 z
>>> p.nice()* e8 L1 ^% I3 ?
0& I! y& {9 U5 a, [+ W( ]3 A( X
>>> p.nice(10)  # set6 v/ r0 k5 C4 {5 f) N6 k; x
>>>2 x' ^+ c4 b5 m& m' L1 |
>>> p.ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
0 ~* U1 x' b) A7 [9 P6 U' k, i- J>>> p.ionice()# e& D& @6 z! V% U
pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)3 j! D; h. z' n/ Z' x
>>>
. ]4 J* a. K6 Z  ^& \5 G>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # set resource limits (Linux only)& g" t5 v9 q/ C/ a& z; I0 Y
>>> p.rlimit(psutil.RLIMIT_NOFILE)
6 ]2 p5 v; S4 i: h5 F5 j0 U# f+ H(5, 5)
% y2 W. N0 u/ K% P>>>
& V" [* T9 U  R! S/ l0 x>>> p.environ()
) ?/ C" R; ~6 |; l3 M; y0 S9 P" @9 G{'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',! D/ W3 d3 [; K
'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'COLORTERM': 'gnome-terminal',% o! C* ^5 J2 y8 M$ X6 j
...}$ a/ I% D* G( L  Y- N
>>>4 W) h6 h1 F7 f5 U6 _1 X8 R
>>> p.as_dict()' A7 |. w" s4 s3 i' m
{'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}
: Y# t# `7 x1 y4 p7 C>>> p.is_running()) s( H5 a- `5 o% p2 t  D
True
3 U! X6 }* j6 x+ l) O2 p>>> p.suspend()! G2 N" \3 _, q& t
>>> p.resume()
% _" c/ u9 g  C9 }: F4 \! \- F>>>: Z, G, x% u( h2 ^% i2 O3 D7 j0 \
>>> p.terminate()
# w- ?- f2 M/ u7 p; q1 P>>> p.wait(timeout=3)
. F7 f2 o$ t# R8 {% e0
* Q4 U" u/ `% j6 N' [* }* C>>>  b8 [3 O( r  @  ?
>>> psutil.test()
; N# w/ n6 n9 A% dUSER         PID %CPU %MEM     VSZ     RSS TTY        START    TIME  COMMAND
3 O& l  s: s6 r* ^root           1  0.0  0.0   24584    2240            Jun17   00:00  init
* W4 N9 k3 Y8 w/ |root           2  0.0  0.0       0       0            Jun17   00:00  kthreadd) p/ n) O- u; C/ B8 B; |
root           3  0.0  0.0       0       0            Jun17   00:05  ksoftirqd/0
3 u. P5 N3 A9 {- u6 [..." H# b6 Q* ]8 A$ F' E
giampaolo  31475  0.0  0.0   20760    3024 /dev/pts/0 Jun19   00:00  python2.4+ E$ Z8 S6 r# J7 g( L# g: a9 w
giampaolo  31721  0.0  2.2  773060  181896            00:04   10:30  chrome
2 u; F) Z2 f2 i2 C. U' Droot       31763  0.0  0.0       0       0            00:05   00:00  kworker/0:15 |6 ~) `# R5 u
>>>2 m" F8 E2 n- ]6 [! w" m/ A; m
Further process APIs
  \  Y; {% ^, e- B% s8 P# D7 W& p>>> import psutil
5 L5 V3 C  v4 D>>> for proc in psutil.process_iter(attrs=['pid', 'name']):5 y! U# \9 b, W+ u) h: s( @
...     print(proc.info)% {3 M& V* Z" w2 S5 e
...# j8 U1 ?3 s3 ]& t) z9 G9 M
{'pid': 1, 'name': 'systemd'}
: m6 j& P1 \( {! J7 M, p0 B3 Q{'pid': 2, 'name': 'kthreadd'}2 F8 {" W# S; W" N' w# V. P- M1 V
{'pid': 3, 'name': 'ksoftirqd/0'}# E9 z0 ]' \) U9 z4 w4 S  H/ S
.... J1 w+ c3 x/ y- }7 {% G2 V
>>>) x4 ?' F* k+ P. L# y: X6 f
>>> psutil.pid_exists(3)
) [' T# r8 Q. v! ]+ \/ G0 ATrue$ R) s. S# u+ v7 c( F
>>>
& Z- }* G/ M" i- [>>> def on_terminate(proc):& n) l& p. I4 @, w! @
...     print("process {} terminated".format(proc))1 t) j$ s' [$ H$ I' L4 ~7 D+ f
...
4 B: T3 ~) T9 F* w>>> # waits for multiple processes to terminate1 Q7 b9 E3 L; K& B; Z
>>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)
* o; g% Y1 E0 H1 Y>>>
* l) @4 q4 u8 u* G: Y9 jPopen wrapper:
! @. O1 U& e$ g! p; R$ n+ O* n  @, ?
>>> import psutil0 p. T$ r/ c! D/ C8 I* p
>>> from subprocess import PIPE
5 N3 t. U: A8 ~! b$ M# j' h>>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE). G: h: g5 q* Y9 D& \0 w
>>> p.name()7 C, f' ?: n* K2 Q/ b8 A/ ~( R) P) U
'python'
- Z! Y6 N' U7 l+ s- I( J* k, o; J>>> p.username()0 {$ o& ?; |$ o) r1 |; n* A
'giampaolo'
7 C+ o& N. ?; y7 b7 `>>> p.communicate()0 n9 l. c6 z+ k% B, M1 n$ t; }
('hello\n', None)
% e, J6 z$ a: {2 ^) a2 l1 ^>>> p.wait(timeout=2)
6 j% @( W7 t7 H09 S. G, ~% V3 Z5 k5 M" C
>>>* i* F: t/ i  S' t+ C5 a9 g
Windows services
5 S. m' [) P4 k' a$ N$ c>>> list(psutil.win_service_iter())0 |3 \4 D/ a7 V( G7 E4 |
[<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,
9 c+ ]. k- Z. `* A% R <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,/ }) d: S& E3 S7 f  F7 X. y% n
<WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,
. T3 ]; V( [! Y' o  Z# g$ A6 w3 | <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,
$ u4 a: u7 B5 q' v1 O5 t- H8 g0 w ...]
8 B- s- d8 O& f: b>>> s = psutil.win_service_get('alg')
& H# G( Q- B0 z' l$ o9 d4 w$ n>>> s.as_dict()* Y1 v  t: r1 q& s8 _
{'binpath': 'C:\\Windows\\System32\\alg.exe',
! b4 G. F3 }! R+ O 'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',' S% C7 G! [0 ^2 K' H
'display_name': 'Application Layer Gateway Service',3 ~- H2 D/ ^, L6 }% z. }
'name': 'alg',% p& \7 {  ?3 `% g, P' Z0 Q/ D
'pid': None,* Y- c9 }! a0 }5 j. ]: `
'start_type': 'manual',
' r2 j. H! T) y9 h4 U$ J 'status': 'stopped',
3 y1 r- D1 a8 U/ N 'username': 'NT AUTHORITY\\LocalService'}
7 r* O3 _0 C4 N# XOther samples

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-12-23 21:09:49 | 显示全部楼层
Installing using pip on UNIX
* ^/ Z" n2 _! ^# s
) S& t/ N9 o4 m& i( Y2 o9 SThe 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:" N  H7 T5 {. z# z' _; i+ M1 h
; a$ b$ _8 B8 R( Y' h+ f. q' n7 t
$ wget https://bootstrap.pypa.io/get-pip.py
, c7 g9 D, {6 T$ python get-pip.py
1 v2 R8 G* G+ M8 f; p...then run:$ K, u5 Y5 E) B
# ^9 r0 B- o$ X, @, i
$ pip install psutil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:27 , Processed in 0.089744 second(s), 35 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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