易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4250|回复: 2
收起左侧

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

[复制链接]
发表于 2017-12-23 20:59:48 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 6 金钱 才能浏览
 楼主| 发表于 2017-12-23 21:01:22 | 显示全部楼层
Example usages
( X/ k; k0 a) o. p, R* l: V
, ]. P6 I# T) c& nCPU9 U" ^: O( f6 _
>>> import psutil
! ?( R' E+ p  f: e>>> psutil.cpu_times(): O) j2 u7 p) J& y' 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)
% s( k* P$ i# t4 M1 Z5 W. H7 h( E>>>
; A! Z& R! ?$ x>>> for x in range(3):! W# o# H. N4 ?" q* L! V
...     psutil.cpu_percent(interval=1)
1 S/ ?) A. r4 x3 F. W7 V...! t8 S- Q! `$ Z( ]
4.0- S) E2 Q' X3 [6 b( s3 p3 K
5.90 N/ P$ d6 I/ z' w9 l4 Z7 J
3.8
: C2 H4 S6 k& C- o1 |>>>
7 [0 X! @! ^/ o3 w  n>>> for x in range(3):
9 l6 S: P' W) o...     psutil.cpu_percent(interval=1, percpu=True)
! y- H+ r: E7 g5 g& [9 y+ t...( o1 b. ]2 n8 X
[4.0, 6.9, 3.7, 9.2]
5 e2 w+ D( j+ ^% t* C[7.0, 8.5, 2.4, 2.1]# @% t' z! P; b" ]3 T4 |. o( ^
[1.2, 9.0, 9.9, 7.2]
  S5 H+ O8 V  t' f>>>
, y) T: X7 Z+ E8 P6 h6 |! Y  n1 V6 ^3 K>>> for x in range(3):6 b* _0 f" G+ Q& l3 M6 T
...     psutil.cpu_times_percent(interval=1, percpu=False)* F* S# f0 ~2 u2 c* Q9 A/ Z0 \) k
...* a' ?9 D. a2 _
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)
. K9 N* W6 E% b7 N' iscputimes(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)
8 G" ]. U  k; ]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)+ F$ j) @9 e' x' U. e- h; `# E  D
>>>
6 |  U1 z/ x4 L8 ~>>> psutil.cpu_count()
+ c3 t3 V2 @2 I" N1 W2 w$ r4
( Z  x+ h8 K, O, l' h- C9 z. Z4 e; j3 t>>> psutil.cpu_count(logical=False)6 `& R7 k$ M! @, H
2* v0 \1 z3 @6 M/ n
>>>5 e0 @5 p$ N& @1 b" z* e$ n/ h
>>> psutil.cpu_stats()
( T4 [5 d# c7 p/ {. x4 Fscpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)
, m! b1 y& W* r7 p, o7 x" O* c/ B3 Z>>>* z9 V/ ]; f' a  f0 w
>>> psutil.cpu_freq()
. b' P) s# Q+ H: T" sscpufreq(current=931.42925, min=800.0, max=3500.0)* S! Z* l% \  G7 P+ n4 x4 L
>>>
) C" Q6 n' H, ]) L" L, }Memory. C% j1 f$ s& P. t
>>> import psutil
3 B4 |/ |! J! }" d4 A, o% R>>> psutil.virtual_memory()
/ V6 a! F* m  w- e9 Xsvmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)5 k" l( l+ m0 q
>>> psutil.swap_memory(): N+ R" Z7 K5 J5 \6 [5 r2 n. _
sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)
' N- _4 f2 @  h8 {3 z; s/ n1 U>>>$ s) a# ^* L+ _9 h. Q( b" B8 D4 g4 I& [
Disks- Y! y. x1 O! }6 ~0 n( M
>>> import psutil, }; R7 {* j9 I- ^. t  F4 T) m
>>> psutil.disk_partitions(): @* F* N/ |+ c( u* P$ R
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),, T1 \, V8 R0 p/ N
sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]
2 G& b" ?" B! E! F/ w' [. R* i>>>% M5 U9 s" t) z) W
>>> psutil.disk_usage('/')
3 r9 p9 C) l. E+ J9 x" K" v2 y' A8 Ksdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5): @& ]& n# n  Q. }4 w. D3 P) e
>>>
( G9 G# f, z* @: i>>> psutil.disk_io_counters(perdisk=False)+ m+ ]1 D, p1 `. q. ~
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)* {9 }( E" e1 h0 j. O
>>>& v; c# X: u' Q! G3 L5 r
Network
4 i) h6 y2 V/ ^- f! C>>> import psutil2 y) l9 P- b; g, S0 R2 r6 D
>>> psutil.net_io_counters(pernic=True)
9 h6 z1 Y* H+ x3 Q% P% t/ I{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),+ K& W  R$ _& O+ o2 O
'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}6 I, {0 ]0 g1 p2 u( I& Y. D; p
>>>
# A3 c$ n" N1 E* m+ c5 G0 i$ k0 Q>>> psutil.net_connections()3 d' ?, _7 z: s6 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),
& i7 j) A( K& U1 I$ X2 u3 F2 q9 A 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),
4 Z$ k  \7 D' \6 V) v 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),
' u8 w' A8 b6 C: [- O  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)
5 Y0 z% O$ F2 A: P0 m ...]
2 u3 W/ ]; X* K( Y: l* k2 E% r>>>* v7 B$ m  Z3 e8 K2 @/ D. F
>>> psutil.net_if_addrs()
8 n0 ^3 L. r! D& U1 [{'lo': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
8 ~* a- P8 H8 v: w0 C% v/ T        snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
) o/ o2 Q! w" i' [) h9 L        snic(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)],+ S' s9 f% X5 Y
'wlan0': [snic(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None),
* p/ |1 o! C+ Y* [! A! K, A           snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),
7 W% r- p- f1 \% g2 \9 j! ?           snic(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}0 P, u" H& O: T; v
>>>" e# c2 F9 n# [! P
>>> psutil.net_if_stats()% c% y* @* v! i6 q5 F
{'eth0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500),
' e) t  _; T+ y* n" A4 l# C 'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}
6 P1 }# k7 [' J# ]1 D, u3 [, y>>>
  E# t  L. X4 k. RSensors3 M# v2 I; ?+ o  }+ n7 ?$ H8 k
>>> import psutil
) {7 ~) v3 H# N! d- D( d0 z+ W>>> psutil.sensors_temperatures()3 I$ P: v* Z! T, U- L$ f
{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],  l2 D5 ~( o0 _
'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],6 T$ S% Q% [3 A, H, c* b  d. _  X
'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),
" y  e7 n* Z/ w& d. L              shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0),
5 s  }* Q, d8 r8 R: M8 \; B              shwtemp(label='Core 1', current=52.0, high=100.0, critical=100.0),4 M% P# F1 A# Q5 G+ z
              shwtemp(label='Core 2', current=45.0, high=100.0, critical=100.0),
" x6 c1 f! q6 r/ y. d* v              shwtemp(label='Core 3', current=47.0, high=100.0, critical=100.0)]}- l; Y  ]: q( n# J' Y# m
>>>
& V6 `8 U! F/ ?+ F# x>>> psutil.sensors_fans()
# E$ q* }& S8 }$ X) E5 `{'asus': [sfan(label='cpu_fan', current=3200)]}
% ^3 y; C9 z* a: r>>>& x) q6 O) C2 W2 N4 Q/ |
>>> psutil.sensors_battery()$ f* j6 p& _5 ]! g" U6 \/ ^
sbattery(percent=93, secsleft=16628, power_plugged=False)  d# ~9 A% H7 Q0 k
>>>
; _: P$ [! d8 q# b$ Z9 hOther system info
* j  ]9 m7 d9 k6 G: r>>> import psutil
+ Y! m, ~! v9 d) V& b! O; c>>> psutil.users()$ W9 Y; d$ ?. R5 X$ m. J, T3 G& s
[suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),
  u* B3 F" X4 q8 e- k+ s  T7 d suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]! n8 y) \9 Z% a  d- a2 m$ L
>>>
( n* d# R1 ?* o# M4 \2 _( e+ q>>> psutil.boot_time()
- @2 m' I4 D6 Z. A9 D( F# \6 K1365519115.0
$ L0 o3 D6 h- n/ n2 S& A! _2 d6 Z>>>
9 l. L, o7 W8 y* `) D& iProcess management( O3 ?7 l$ h, S) h3 c
>>> import psutil4 {1 g' P- Y4 |0 z- Y. s2 Y
>>> psutil.pids()
+ b3 \2 K' e. v& R! g9 s+ |1 A[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215, 1216, 1220, 1221, 1243, 1244,% _/ Y4 L1 Y8 p0 V3 I* `7 S5 }
1301, 1601, 2237, 2355, 2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282,+ I# R) _5 V; f6 }
4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446,
+ B+ S- h7 F& o; l/ u7 v% Q 5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
5 v; R9 O* C7 c( U# {# i' j>>>0 W5 F/ ~% K& o4 E
>>> p = psutil.Process(7055)
0 z3 S" J# K/ y  s>>> p.name(): i# {! h  u2 j& j- [! g: {
'python'" \5 ?) i4 S$ E1 {3 g- S4 T
>>> p.exe()8 D4 u5 s: W& L. @
'/usr/bin/python'
: x2 w5 N3 S3 U- q& `7 R>>> p.cwd()& f+ t4 u+ ~8 x, P
'/home/giampaolo', E% t) t- D6 F1 G2 }& h
>>> p.cmdline()8 s2 j+ h! D7 X7 v
['/usr/bin/python', 'main.py']
8 x) X/ l1 ^' z$ `& E0 A8 ?, a>>>
1 }: W; y8 w% ]9 n, b>>> p.pid+ F: c( M1 F; l3 p# Z" v* V4 B
7055
% |& s. u) k/ K, e! Z; G% P>>> p.ppid(), ^0 ?0 w0 Z0 o" \" F' i
7054
# F- |: ~+ ~: }8 s, F/ ^% G" e( b>>> p.parent()3 R/ ?; ~' Y8 o' P
<psutil.Process(pid=7054, name='bash') at 140008329539408>
& d5 q& |# l7 b1 k>>> p.children()2 t1 m, M# D, f- _; M+ M3 o! L' G) z
[<psutil.Process(pid=8031, name='python') at 14020832451977>,
) i, L; C! c& I$ f, n( l5 f <psutil.Process(pid=8044, name='python') at 19229444921932>]. z4 |% D6 l$ \4 X; `/ s6 p
>>>
! `  q" X& f9 ~1 S* ?% W>>> p.status()
2 i. c- O6 A7 ~7 Z; J7 a'running'2 V  |  x  u- T
>>> p.username()# N* ]: ~6 i/ Q% K
'giampaolo') w( k. ^3 t5 d5 K8 Q+ j
>>> p.create_time()" d! q) x! _- ^3 V/ s" W
1267551141.5019531/ k, {6 g2 i" S$ J3 p
>>> p.terminal()
& I) p# Q* ?) \'/dev/pts/0'
/ \' x( L0 C7 G4 y; Q7 q0 z>>>& e" @' P: _" S6 h; S6 J
>>> p.uids(); T. ~# q* g+ m9 A- a$ P
puids(real=1000, effective=1000, saved=1000)- q. j* O5 |- f! E2 q
>>> p.gids()
  ?$ O# K' t2 q( I' V! }' g- D8 Mpgids(real=1000, effective=1000, saved=1000)
7 T3 M' R! T2 U: T: }% \>>>; Y+ L& o" u4 f- ]4 E' m
>>> p.cpu_times()
- f: `( i1 u+ x' ^$ Bpcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1)# y; [! W1 `# p3 K$ a$ X0 o
>>> p.cpu_percent(interval=1.0)8 P# C! C" q7 u6 u
12.1
2 Z! `" a  b5 X4 }8 x>>> p.cpu_affinity()3 p$ y9 @% ~: S! _. L
[0, 1, 2, 3], H. u- [$ J4 T3 U
>>> p.cpu_affinity([0, 1])  # set
5 `; ]7 i4 [5 g& C! X( G2 ^>>> p.cpu_num()4 z. Z9 ?  G7 Q: R, u& X% b
17 F: V$ V. i( I* |6 L
>>>% u3 ]7 M  U0 V+ t
>>> p.memory_info()
# P8 l7 U- `0 j3 Q- lpmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)9 l6 l7 b0 S/ |2 o
>>> p.memory_full_info()  # "real" USS memory usage (Linux, OSX, Win only)
7 ]9 u# U0 a/ ]; b) d3 C& T! mpfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0)
" h3 q  d8 F5 E' @5 ]# t>>> p.memory_percent()  C  o  m& G# U0 H4 Z- B$ M* r
0.7823
8 }% ?- `. `' ?  B. F>>> p.memory_maps()
9 a6 Y+ V8 x$ v/ E[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),. J" b0 v9 @8 \  Z3 A0 F
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),0 W5 |' n, A2 M9 i2 v
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),4 ?0 l4 l: k9 L0 v# c
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 p0 d7 H0 i' ]  O1 ~6 d
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),1 Y% C5 R1 J( Q0 Z! I
...]- _, I' l. b! S. u% D
>>>
$ a8 ]: X" H: _9 O9 R" \>>> p.io_counters()
' k- s$ v4 [" _3 b/ A/ cpio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)9 q4 f1 I, |' ~3 a" n
>>>  ]$ z5 U4 @/ z: g
>>> p.open_files(), ]0 |$ c; _9 w. E
[popenfile(path='/home/giampaolo/svn/psutil/setup.py', fd=3, position=0, mode='r', flags=32768),
, H7 k( }: f4 ` popenfile(path='/var/log/monitd', fd=4, position=235542, mode='a', flags=33793)]
" \# j$ a; W& t1 ?# Y& x% Z2 o>>># ~- P: }& r7 y3 S3 j
>>> p.connections()
" [; V' v* O" m# l$ Q4 u: ?[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'),
. B/ t7 v: q  P% u 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'),
$ z9 f( L& e4 Q$ Y 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'),
, F. g7 H; C; g0 H 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')]( J: ~2 d# r" @7 t
>>>
3 j) w8 K( B) T8 j6 Q% w# k- ~>>> p.num_threads()
0 A' q# \! n3 B3 j2 _49 H) _7 C6 p# m7 l+ s, t& \
>>> p.num_fds()
' W; Z: k& V4 Z+ ]+ v4 K8
1 q; z( f& C" `; _  F0 _>>> p.threads()
# x# b) X) x3 }* b- U% N[pthread(id=5234, user_time=22.5, system_time=9.2891),7 ]" T9 [$ ^. N# Q$ ^) b, m2 J
pthread(id=5235, user_time=0.0, system_time=0.0),' `; j9 n. o& d9 Y' `8 l" R
pthread(id=5236, user_time=0.0, system_time=0.0),
; ]9 m' f7 x0 i  ^+ Q pthread(id=5237, user_time=0.0707, system_time=1.1)]6 S) }9 D2 l3 T: @3 a$ h
>>># G, R5 ~' x& `3 I+ B! S
>>> p.num_ctx_switches()
; y+ q+ ^$ d. L. P/ K) O9 mpctxsw(voluntary=78, involuntary=19)" H; p3 s! r3 Q9 y* R
>>>3 r  `, l1 ]4 s  C: @
>>> p.nice()  s# L4 s" L8 o1 U$ u) N
0& T6 Z- o9 G* i/ E
>>> p.nice(10)  # set& n$ `* z+ T; V* l, i! G
>>>
( Z  \8 O4 W5 o2 e' _>>> p.ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
7 T- D' @1 J. V* V  H/ f>>> p.ionice()
6 J! F$ u- h. m; }" v6 Tpionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0); A, O6 q9 f; S1 q* v
>>>. c; S6 T9 [4 d! T6 y
>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # set resource limits (Linux only)
/ C3 S9 A' \7 h' f& I0 l, e>>> p.rlimit(psutil.RLIMIT_NOFILE); Q' \7 C: @  H3 t
(5, 5): M* ?) f2 P& n7 b; B
>>>
6 u+ {7 }" I, e7 b# f* _2 P>>> p.environ()( m3 S  X# ~1 d+ @5 p
{'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',
$ m$ Q+ l# e0 s  D* y'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'COLORTERM': 'gnome-terminal',
* U0 M" X4 m( ~, d0 M0 H9 M# z9 ] ...}
# ~/ Q, _. J/ Y& t- q  I7 j. o>>>8 w6 q0 D  K( j% r% U3 v& l# c+ z
>>> p.as_dict()
7 E& E' @7 ]' {8 v{'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}
" [2 p' T# T- M/ O- ]- ?>>> p.is_running()
& t7 S/ H' ?: D# X6 X- n2 KTrue$ [( z4 e5 [' Z: Q1 `7 k# H
>>> p.suspend()
; ]+ Y9 L! ], o>>> p.resume()
) h9 D  s2 ^& q, a8 D) a>>>
5 v2 `- ~& i" d. R>>> p.terminate()
( R, `: r- T+ k4 p! F& h>>> p.wait(timeout=3)& U0 a/ Q' w, ?. ?
06 q4 C+ l' R  b* R; K: [, U
>>>
" M8 y: `5 G8 `7 N>>> psutil.test()& X3 J5 Q$ k7 ^* x/ Z% L
USER         PID %CPU %MEM     VSZ     RSS TTY        START    TIME  COMMAND9 j/ z  d: z2 S# o) s9 x6 `
root           1  0.0  0.0   24584    2240            Jun17   00:00  init
( X1 D  |0 h4 W0 vroot           2  0.0  0.0       0       0            Jun17   00:00  kthreadd( U/ |- n8 b  g2 P$ C
root           3  0.0  0.0       0       0            Jun17   00:05  ksoftirqd/0
. K+ g9 L2 b0 M& Y: E...
# M( Y/ Z: I4 [) |9 lgiampaolo  31475  0.0  0.0   20760    3024 /dev/pts/0 Jun19   00:00  python2.4) l- j* r- X: y( u1 m
giampaolo  31721  0.0  2.2  773060  181896            00:04   10:30  chrome* j9 v" m5 q7 [& g6 T3 Y1 @# `# F
root       31763  0.0  0.0       0       0            00:05   00:00  kworker/0:1
5 N, T+ j2 ], O4 K, k+ _. w>>>$ r: r* U6 k3 |( w
Further process APIs
' J! s  S$ _' d: b  d4 j) E>>> import psutil* I" l* c+ e0 @, r& W( L- K
>>> for proc in psutil.process_iter(attrs=['pid', 'name']):' ]. G) V) F/ d; c: P2 C
...     print(proc.info)
6 I0 K# `) a) y  _) r1 \...8 j5 H3 p& q+ `9 l/ c% _
{'pid': 1, 'name': 'systemd'}
/ v$ o7 r/ {4 B$ N( X6 h{'pid': 2, 'name': 'kthreadd'}
" ^. d+ @% I. u% u) ~% _: {{'pid': 3, 'name': 'ksoftirqd/0'}
& c8 c0 j6 P6 l9 m) h; N' z9 P5 r..." n5 _. T+ m: k
>>>: Q4 L6 L" _: c- G+ L* l
>>> psutil.pid_exists(3)$ ^$ t* c# G: t  X: T
True5 r# |* f* J9 R9 F7 C2 g
>>>* W' @6 x; s, W2 N" Y
>>> def on_terminate(proc):
: e& y( t9 d- h9 v$ E! L6 Y2 [3 l...     print("process {} terminated".format(proc))
$ z0 k$ T1 r+ T...2 t( R- i$ v: w2 t! q  l" f
>>> # waits for multiple processes to terminate
5 a5 h& y& B9 |8 S% N3 @>>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)
+ s3 }+ x' _" J% {>>>
3 }' e% U- {5 Z& m7 xPopen wrapper:) j  a# t) k$ m( p6 O5 F% k

2 ]+ Z; ?9 ~- y8 k7 u# W>>> import psutil7 ]: x' O) r; l& c; v9 I
>>> from subprocess import PIPE( @8 p; _3 a% L: x, a3 Z* w
>>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE)
' ]- m/ h0 P1 m  P, T>>> p.name()
  R) ^3 n) z; j4 F: W( O5 Z0 @7 c'python'
- l1 L& |5 d5 x- A>>> p.username()
3 S+ j/ Q6 }, V1 E: ^; O( C'giampaolo'5 D- y2 S8 F& ?
>>> p.communicate()
$ @) ]* e. d. z' {$ U('hello\n', None)1 J, [$ B! R! Z
>>> p.wait(timeout=2)
+ M; Z5 P% o# f, \! u2 [( x06 a* U8 }+ ^& @3 d6 s
>>>, @; P+ F# \4 E$ N5 r
Windows services
; n; h. n/ N& ]: k5 _0 _' F& n>>> list(psutil.win_service_iter())
1 Z4 O0 m2 b7 x% j9 y& \[<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,9 o+ L4 J: t, a$ l2 X; L
<WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,
; \0 L( I6 d1 w* [" V5 c3 e3 ? <WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,
5 l' y: [8 r$ w$ I3 e5 y9 G" L <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,, G4 p# d9 R1 h, H; S8 z+ p
...]' k4 W2 S! W8 H$ D; S/ K
>>> s = psutil.win_service_get('alg')
! S: P& [( X; H>>> s.as_dict()
- Y& v( \3 k0 U6 `" G4 J{'binpath': 'C:\\Windows\\System32\\alg.exe',
6 [* b/ p0 m( {2 J; U7 ]0 n/ S4 T 'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing'," U7 V, ~' B; @* o( Y+ O
'display_name': 'Application Layer Gateway Service',
$ M% Z! `& s+ M; P& P/ b! ^/ ? 'name': 'alg',
5 [( z9 f1 Q. d5 d1 g) s 'pid': None,% Q" o9 X" V! f+ v9 ~: }! o
'start_type': 'manual',$ o. S$ {0 a9 I
'status': 'stopped',
2 X7 E, T* k+ G 'username': 'NT AUTHORITY\\LocalService'}; j! j4 C6 Z/ w7 ^
Other samples
 楼主| 发表于 2017-12-23 21:09:49 | 显示全部楼层
Installing using pip on UNIX( |1 V4 j' |6 O6 D8 y; G

. J8 W; [& d; I6 \. T5 ~" IThe 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:8 Q4 `1 y* K% {& o( A, K8 a

1 y( H& Y3 R4 ~2 _7 [, o$ wget https://bootstrap.pypa.io/get-pip.py' r$ F: B! Z$ j' P1 N; ^1 R( ?( v( X5 n
$ python get-pip.py
& b5 X2 R2 H2 h4 s& A9 Z...then run:
& Q) K2 ?0 b9 ]: T" n+ b
/ l( c" P7 N# c9 I# V$ pip install psutil
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 20:19 , Processed in 0.070663 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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