找回密码
 注册
查看: 4259|回复: 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
2 u4 C- p3 B; T, Y6 B; {  w7 s2 G( E# L) n
CPU0 v2 _1 C7 _& w6 _
>>> import psutil6 m( h7 R) B6 Y( ]/ |
>>> psutil.cpu_times()2 a$ x6 A9 j, y: g0 r
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), b5 z' S+ p* i
>>>
+ @2 K/ ^" y3 F9 ^; x, Q>>> for x in range(3):  A' J. J/ ?& b$ L
...     psutil.cpu_percent(interval=1)' @, K% s, u2 ]+ E
...
  z+ p6 f2 {: E) Z* e9 \/ N4.0$ O& S" Y; P3 C# q6 b' F; V
5.9
6 q, E' B( H+ a/ n; z3.8
; U& |0 g5 i/ W/ O>>>) |( b' V" [* f0 u/ c2 l
>>> for x in range(3):
$ W( F/ o" b, ?7 W) K  k4 N. r...     psutil.cpu_percent(interval=1, percpu=True)
. W8 n, T) f" y; n...
; I/ ?0 H" ^+ q1 N[4.0, 6.9, 3.7, 9.2]
$ e4 F6 I; Z, r0 M  J' l! b* Y2 ^[7.0, 8.5, 2.4, 2.1]" W) U$ u/ \2 }8 E+ u" t
[1.2, 9.0, 9.9, 7.2]
& l; I- A9 K  z% D! m>>>
2 u, R: t% L& `% s3 _9 b$ ~! Q5 Y$ H>>> for x in range(3):$ }8 X4 w/ l& k+ P
...     psutil.cpu_times_percent(interval=1, percpu=False)
, f; d' t' m) t. x+ X4 N% v..." `, K, y6 d' p3 s- f: P, Y
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)
/ e' Y* k/ I9 I' n% d) w( T) ^8 L  Fscputimes(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)3 B) S5 `3 W/ c" n( U
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)4 t# F  @1 U6 M+ J
>>>* b# _* j/ R; t7 l- K/ F2 ], Q& C
>>> psutil.cpu_count()3 r; W! f8 ~* k1 n
4
6 v; ~' f0 Z/ C& n4 M7 r>>> psutil.cpu_count(logical=False)
+ x# `2 {; T3 U2 B$ X% W7 y1 b2
8 m; X( V) P. B% r>>>
+ z5 ~+ u7 F* a: [>>> psutil.cpu_stats()
4 S% ~6 y2 }3 M$ M: x) c3 `scpustats(ctx_switches=20455687, interrupts=6598984, soft_interrupts=2134212, syscalls=0)8 j. B! `3 W4 o0 N3 z/ {0 O
>>>* C; W8 p9 h8 h. P" g, i
>>> psutil.cpu_freq()
; d. I% S" K, |8 ascpufreq(current=931.42925, min=800.0, max=3500.0)
2 c( g7 C/ c& }5 {+ I8 T9 C>>>  j  l5 R! ~$ U# }) P) ~
Memory
1 N9 t, ^2 [7 u2 F>>> import psutil4 o1 R7 c! U8 s: O$ K5 \0 [7 y
>>> psutil.virtual_memory()
6 [4 x9 D2 J7 b8 C* I. Fsvmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304)" p( }8 y0 {  g( t& I8 A' c; f+ L( ?
>>> psutil.swap_memory()4 e. g3 E/ a/ B. T' l* o6 r. B
sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)% R# S+ D4 q. j. {+ g3 ]3 D* j2 E
>>>
, G6 w! Y) f8 _Disks4 G9 k* q+ z* M* T# s
>>> import psutil
8 V- Z2 ]# n- f* h- c- n5 z>>> psutil.disk_partitions()
* N9 }$ V$ d; Y1 a4 W[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
9 M4 ^* f( P& ?" a" N9 @0 t sdiskpart(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]6 g9 U+ \; `- X9 g
>>>
+ Y- V% y3 S8 V- B! z7 \>>> psutil.disk_usage('/')
7 N" t7 Y; W% M/ ^sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)+ d2 E+ F9 R. Y) e/ c7 M
>>>
. N. ]$ T. V2 k& s7 r- M>>> psutil.disk_io_counters(perdisk=False)/ U2 n" s/ h" I: ]) N4 P  i7 n$ G
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)
/ U1 h0 ?+ D; e: r  f& Q>>>
+ z- X& j. f% N- u* XNetwork& c+ @5 X: t& F5 l! S' f# E
>>> import psutil& l+ K6 v- z. K6 g. V& i1 i
>>> psutil.net_io_counters(pernic=True)
' T7 H% u% B* l6 S5 S+ g( c* z{'eth0': netio(bytes_sent=485291293, bytes_recv=6004858642, packets_sent=3251564, packets_recv=4787798, errin=0, errout=0, dropin=0, dropout=0),% }2 h" T- G& K/ w  M; C5 w
'lo': netio(bytes_sent=2838627, bytes_recv=2838627, packets_sent=30567, packets_recv=30567, errin=0, errout=0, dropin=0, dropout=0)}, {/ C& c8 X$ ?6 r5 d  l5 j
>>>" E; e, n; d! j+ u, m4 }( l8 g
>>> psutil.net_connections()2 W  I: _! S& n' v( W- b
[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),
$ `4 @! K+ n! L9 w/ ` 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),
- F8 ]- Z; C) W0 L' r# J' b3 X 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),/ Y8 q4 \0 F3 ?6 q( c" r6 B
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)
. L6 ?  E: f; f+ R# Y! u ...]. v5 L$ v% H6 H1 o) Q7 _
>>>
+ e' Y9 D! }/ ^5 {- k# q>>> psutil.net_if_addrs()7 o( p* j% D/ b; M
{'lo': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None),
  `; I/ d* B3 Y2 c/ |8 D& e/ q% B* k$ A7 h        snic(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None),
; T! S+ H/ _( z+ M# a4 _' ]. E        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 L. o. ~1 w. z: 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),
& }/ z7 i$ {' q           snic(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None),' O/ l! ^, `4 Z: p
           snic(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
+ M& G+ e7 W* J& l. T>>>
% {5 E5 I! R- J+ P>>> psutil.net_if_stats()
- b" x) B# F) r3 `+ g( L{'eth0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500),8 c( M+ h: S& K
'lo': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)}" |% J( p: [- n  e9 e+ {8 O# H
>>>
. V& h# l4 x+ a( }: tSensors: s+ E2 g. |! V
>>> import psutil
: F% s) V& _  X1 i. D, F>>> psutil.sensors_temperatures()7 n$ K6 E* e. V& s
{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)],
5 ^4 y/ V/ ~6 J0 U) A6 p' [% v; Z 'asus': [shwtemp(label='', current=47.0, high=None, critical=None)],
( P4 C7 e7 B: n  B% o) h 'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),
' a+ a/ L) h2 L; m3 E; @              shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0),3 s. o% _% g- G% E: s$ B
              shwtemp(label='Core 1', current=52.0, high=100.0, critical=100.0),  G# e4 a* H/ k+ g2 C% _3 O/ _& L
              shwtemp(label='Core 2', current=45.0, high=100.0, critical=100.0),
. U; f+ V7 ]' ^: O0 v              shwtemp(label='Core 3', current=47.0, high=100.0, critical=100.0)]}
) @  O6 g* j# `  R- O2 x- Y>>>0 c  U2 y: [" q
>>> psutil.sensors_fans()
) ?  R5 g$ K# E7 {{'asus': [sfan(label='cpu_fan', current=3200)]}$ _: ^, p9 y7 h9 L& V3 v# V) W/ G& l4 p
>>>6 j# k1 j$ u- `; Q- J
>>> psutil.sensors_battery()
/ }" Z) K0 U6 W- i4 B5 l( esbattery(percent=93, secsleft=16628, power_plugged=False)* F) v. W* [  `* F
>>>" Q2 l3 \* ]* @( B, k
Other system info2 J, u* b' }: }4 Z0 w
>>> import psutil
6 z7 u+ G, B0 X0 b; l; W7 M- _>>> psutil.users()6 M5 [# ~( P* z# L
[suser(name='giampaolo', terminal='pts/2', host='localhost', started=1340737536.0, pid=1352),
' U1 V+ j9 C8 Y suser(name='giampaolo', terminal='pts/3', host='localhost', started=1340737792.0, pid=1788)]4 ]1 q! N1 V& e/ k- \
>>>
. ?! {9 ^2 Y# n3 M% c3 g  A. x>>> psutil.boot_time()) {( W+ x4 u/ F' g
1365519115.0
/ A& D4 g$ ]" Y7 e>>>
3 C0 l% E, d0 i" Y. Q- G7 ZProcess management
7 B7 {  f+ W7 d& d9 A>>> import psutil
8 h4 E7 e* Q4 c6 h2 ]>>> psutil.pids()
9 W# d  w5 u) w! \) x" X1 ^[1, 2, 3, 4, 5, 6, 7, 46, 48, 50, 51, 178, 182, 222, 223, 224, 268, 1215, 1216, 1220, 1221, 1243, 1244,
9 J+ }  E# I' V# X 1301, 1601, 2237, 2355, 2637, 2774, 3932, 4176, 4177, 4185, 4187, 4189, 4225, 4243, 4245, 4263, 4282,: F' _( B0 F2 k
4306, 4311, 4312, 4313, 4314, 4337, 4339, 4357, 4358, 4363, 4383, 4395, 4408, 4433, 4443, 4445, 4446,2 b& w9 V8 d% @7 e5 w# `: I$ l
5167, 5234, 5235, 5252, 5318, 5424, 5644, 6987, 7054, 7055, 7071]
) E- P( M, a  G' z: `0 u4 X/ Z>>>
4 p+ M! I+ I5 @: P1 d- e3 \>>> p = psutil.Process(7055)
+ K% j# r3 t5 `7 J>>> p.name()
- x: U- I5 E7 p'python') m# p9 S( M5 l0 \8 V* {, N
>>> p.exe()
$ I; \: n7 f; _, |; g' @'/usr/bin/python'" E% ^% _' W9 m. H/ x
>>> p.cwd(); S  I+ g4 b' R* N  O$ y
'/home/giampaolo'
* _2 X( L; b1 w' H. }# Y9 L>>> p.cmdline()
% i; s: i4 X9 j" X['/usr/bin/python', 'main.py']
- p4 ?5 U6 e+ V4 _>>>
7 O( R! g) |1 m! R; L>>> p.pid. u1 B, [7 p, k( v
7055) a' t( c+ J" V1 M
>>> p.ppid()
  n, A# v- v$ Q6 F7054" L6 m/ f- j4 I' z
>>> p.parent()
+ M1 n2 G$ b( [! V+ w" W8 y<psutil.Process(pid=7054, name='bash') at 140008329539408>) H0 E; f/ F8 v1 X- E8 |/ W# P! A
>>> p.children()
- O( O; R; t  ^+ L[<psutil.Process(pid=8031, name='python') at 14020832451977>,( B* H$ ^1 ]/ x: T
<psutil.Process(pid=8044, name='python') at 19229444921932>]: f+ M1 b2 a9 O$ t* i! x3 W
>>>
8 M7 h  s" ?* O& w. U>>> p.status()
2 m8 y0 S) b" ^  B0 D3 p+ D'running'" \: \) g; {- d6 e
>>> p.username()
; G; k3 J4 K3 n2 |'giampaolo'8 f/ F8 n8 X7 j# G$ ]& g
>>> p.create_time()
- K- Z+ h0 w9 B: X1267551141.5019531
( ^7 T) X, Z5 K! v, Z* m>>> p.terminal()
6 Z8 M- f0 \1 l' F) {5 l6 {'/dev/pts/0'
$ Q6 b; ?  a9 `$ H+ e- g4 |>>>
  }, }1 W& H+ M' \% D* a5 t; i>>> p.uids()
6 R. q5 M% l- o+ N/ }) |: @4 Hpuids(real=1000, effective=1000, saved=1000)* e7 ?2 H8 c9 b. w% E
>>> p.gids()
5 [) s$ i1 q9 |1 p  \pgids(real=1000, effective=1000, saved=1000)7 b! g2 D5 s; D
>>>5 c/ K" f9 c! q7 @+ Q  X3 d  w! k7 F
>>> p.cpu_times()
0 j0 X  {- {- z3 `pcputimes(user=1.02, system=0.31, children_user=0.32, children_system=0.1); F4 `4 {. Z( r& y* K
>>> p.cpu_percent(interval=1.0)" W( w2 C  F9 L- u. |
12.1
( A$ x) Z  w9 d! [( V>>> p.cpu_affinity()+ {- m. {( Y' a/ x; n
[0, 1, 2, 3]
" |: b  `% R6 _8 l- s3 n>>> p.cpu_affinity([0, 1])  # set
* V8 _: G7 K7 ~) q5 O>>> p.cpu_num()
! k8 _# u  M% L1 `7 }1 Q( c* z11 ]; D* ^  t: F0 z! c6 O! o
>>>- I2 N5 T5 M/ u" C( r9 G; R% L
>>> p.memory_info()2 V. p' g3 h2 g
pmem(rss=10915840, vms=67608576, shared=3313664, text=2310144, lib=0, data=7262208, dirty=0)
$ J! e/ @8 ~8 q4 W* l0 ]>>> p.memory_full_info()  # "real" USS memory usage (Linux, OSX, Win only), `7 n6 p6 {/ B/ D/ @/ @
pfullmem(rss=10199040, vms=52133888, shared=3887104, text=2867200, lib=0, data=5967872, dirty=0, uss=6545408, pss=6872064, swap=0)
; ?$ {, }0 l0 [>>> p.memory_percent()
3 r; {4 Q* U" x( r! v0 c4 S0.7823
7 g1 n- v  M7 B& b9 L>>> p.memory_maps()
+ m5 D; n( y: p1 {. T% ][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),' H. g+ Y3 p+ ?+ u$ |* V% b
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),
% L% q& P2 I( Z8 i% O, n 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),$ T5 q- R- |8 R) D) M3 K) d6 J
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),
3 k9 S  M9 o# e 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),
9 T- d  ~5 P. Q) C9 d ...]8 X' u8 `) G6 H; F9 l3 B; d5 x
>>>
8 C* a4 S) R- m8 w! j: Q>>> p.io_counters()! E& E* }" A0 d4 t& n2 S! A
pio(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632, read_chars=456232, write_chars=517543)
$ I8 P4 g0 ^7 q, x. w>>>. O+ \8 E) W/ X7 X, ~- p4 V
>>> p.open_files()
6 u+ R" ]- C) I) ?, y5 i+ e[popenfile(path='/home/giampaolo/svn/psutil/setup.py', fd=3, position=0, mode='r', flags=32768),
7 d/ y9 e. y3 U5 R/ P9 v2 Q2 O popenfile(path='/var/log/monitd', fd=4, position=235542, mode='a', flags=33793)]( Q" `* {: L" K/ M6 U' G- x
>>>9 k+ r) w  f# e" T
>>> p.connections()! K' ?. c" L  Y$ _' M# M
[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'),
$ _% z' G1 o3 O) a+ Y 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'),
, I8 n. L0 b5 M8 K' ?0 e) 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'),- R3 s% d0 D: K" C! X0 e1 y
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')]
9 |8 d  J9 R8 I7 v>>>
) [, j7 N6 o# H+ J7 y* a5 V" J! B>>> p.num_threads()
* q& _3 D! a! [2 y" z* z  \43 d. E3 ?" V- b" p' r" J: S
>>> p.num_fds()0 \, z! P9 j: V9 P6 d3 A4 ]6 l
8& _2 [+ I  _# {( t; \+ b" J+ |- @
>>> p.threads()
4 j$ |8 `& q& r0 o& \( A" B2 g[pthread(id=5234, user_time=22.5, system_time=9.2891),( B5 Y0 F2 h( H% @9 k& p
pthread(id=5235, user_time=0.0, system_time=0.0),
# h1 r# p& E9 M pthread(id=5236, user_time=0.0, system_time=0.0),' H1 w$ W% W7 H" |" O
pthread(id=5237, user_time=0.0707, system_time=1.1)]8 ?% T" T/ f8 E9 q
>>>
) f% u' A; d. W% e& X$ W>>> p.num_ctx_switches()
+ S/ c/ O2 ?  Lpctxsw(voluntary=78, involuntary=19)9 u6 z* M1 w. ~! @
>>>' Q% j- H) ~! o
>>> p.nice()
9 m  R$ I+ Q  j: z0 Z0 {06 e: q! N3 n% ~) s+ p9 q1 X
>>> p.nice(10)  # set: O. n8 {: v! H+ {1 e* U: u  J
>>>
0 U, l! l% s; X* D>>> p.ionice(psutil.IOPRIO_CLASS_IDLE)  # IO priority (Win and Linux only)
  O3 c9 D0 S8 o' ]>>> p.ionice()& x1 N  n. ^8 x/ I8 ~; Y& G1 J
pionice(ioclass=<IOPriority.IOPRIO_CLASS_IDLE: 3>, value=0)
8 ]0 v8 M4 C8 W& y! N>>>
3 B" p3 S( B- g# r5 _, q9 _>>> p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))  # set resource limits (Linux only)
" z( W% @" A3 v' t' H>>> p.rlimit(psutil.RLIMIT_NOFILE)
5 r7 i- w( m, d1 t(5, 5)# K* u# }6 E9 h) x, Q
>>>& ^/ v( e# z( ]: ?- ]" q
>>> p.environ()' t/ z; B/ k3 _* ~5 p/ d
{'LC_PAPER': 'it_IT.UTF-8', 'SHELL': '/bin/bash', 'GREP_OPTIONS': '--color=auto',
3 \9 v  a( s( u; F1 s'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'COLORTERM': 'gnome-terminal',
+ O. j- M' Z6 H ...}
2 @: |* ~: i8 l8 K1 G( N>>>. {9 @# t- j9 `3 Q
>>> p.as_dict()3 @0 Z" D! ^3 L: _7 W& M
{'status': 'running', 'num_ctx_switches': pctxsw(voluntary=63, involuntary=1), 'pid': 5457, ...}% i+ V4 B: f5 v
>>> p.is_running()! E/ }" Q' [, h1 S, \. o( E
True- D# u% b8 j, f5 e0 T# A
>>> p.suspend(). H, q6 r* v8 w9 u) T* c3 i
>>> p.resume()
0 O) ]$ C. K+ o/ c8 v- C' g; P>>>
, w, F' S( z  E/ d5 ~1 R>>> p.terminate()1 Q  o0 \) r( j1 X
>>> p.wait(timeout=3)  A& T  F- x/ j& V( F$ O
0
" N# c% j6 d: S, H% O, I" [' z>>>* J0 ^: B! {$ O% G
>>> psutil.test()
  e0 b. d8 v6 r' B6 ^USER         PID %CPU %MEM     VSZ     RSS TTY        START    TIME  COMMAND
8 H. y3 X! U* h- Z* I4 }root           1  0.0  0.0   24584    2240            Jun17   00:00  init
+ g& \4 j( y; {& Mroot           2  0.0  0.0       0       0            Jun17   00:00  kthreadd
7 z$ x# z$ w* {% h' |: c' Froot           3  0.0  0.0       0       0            Jun17   00:05  ksoftirqd/0
/ `# x4 `7 k9 _' k$ X+ h: {: ?' c...
4 g8 i. h& z, \0 P$ igiampaolo  31475  0.0  0.0   20760    3024 /dev/pts/0 Jun19   00:00  python2.4
1 g# p' w" u& a( T# I  l3 Y% O# ugiampaolo  31721  0.0  2.2  773060  181896            00:04   10:30  chrome
, v. \6 @# L7 k% p5 s6 Eroot       31763  0.0  0.0       0       0            00:05   00:00  kworker/0:1
, Y4 ?8 }' I6 ]' Z* A8 I! |# N>>>9 k( n, E! x' e, l- @  W
Further process APIs
$ T/ W- @( W, q3 i( ]- u- ]>>> import psutil
6 o+ i7 r/ u+ D$ `5 U8 T>>> for proc in psutil.process_iter(attrs=['pid', 'name']):' L" h. R' T, ?0 [0 ]' I
...     print(proc.info)
. I7 m) d: j  C5 l3 U...3 j4 G! J1 i' Q1 |8 p0 f8 o$ K
{'pid': 1, 'name': 'systemd'}. ~' k! M- X/ Z4 H0 R6 B
{'pid': 2, 'name': 'kthreadd'}* A) m% d2 Q2 R6 P+ \; \3 l& `0 t
{'pid': 3, 'name': 'ksoftirqd/0'}& v4 o9 Y5 [  X" ^' k+ n0 y' x
...
1 _" N" _; F4 J1 k5 T; J>>>0 K; q, X3 M0 G' ~* S
>>> psutil.pid_exists(3)1 ^8 o- C7 K+ K" M& r0 `2 D7 V
True
- c# p- B/ c' B" @* k. S# U1 {' f, V>>>
" P: W" Z) J2 r1 e. ^1 G. f>>> def on_terminate(proc):( F, m1 M0 V8 J5 O% r0 h# a
...     print("process {} terminated".format(proc))' C( a. z+ ^) O( i
...* ?! \0 a8 Z9 z5 y+ Z! g' X
>>> # waits for multiple processes to terminate
9 }4 }/ _2 s- P0 N& q5 @- Q>>> gone, alive = psutil.wait_procs(procs_list, timeout=3, callback=on_terminate)
% x/ ~) g1 u; _" U4 r% \>>>
# i* @, P% {( h( D3 n4 A; d+ JPopen wrapper:1 o) s- T" Z5 H: a/ @6 N
3 E$ \4 m5 f  ~6 w
>>> import psutil
' H/ f  Z: @$ P; ], S3 h2 ]9 c>>> from subprocess import PIPE# B1 u# i" G) B" ~' m( E
>>> p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE)
0 w4 Q% U# H- E2 n) G& v>>> p.name()8 E+ I- C' S+ e/ }! U
'python'
3 k, Q  c) G/ }$ l& x% I4 K$ U4 V8 [>>> p.username()2 k7 e: r1 K9 C3 b# F* h# a
'giampaolo'1 c' {3 j( n8 Z( a
>>> p.communicate()
5 `( B/ u& [' l. [('hello\n', None)) r& k' z  z' k% `
>>> p.wait(timeout=2)
1 F3 [( [9 X3 i/ i6 u/ ]) F' D07 n$ t0 |+ v' q% o% Q, C  ]% w
>>>1 a$ m8 w8 V- l% k- k
Windows services- j/ H4 V% @$ X) ^: U
>>> list(psutil.win_service_iter())
! k# f4 m  W6 [- K  L[<WindowsService(name='AeLookupSvc', display_name='Application Experience') at 38850096>,
7 C" G4 {( b) _0 o' m1 _# ~0 w <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 38850128>,9 ]& h% ^. @6 \0 ~" b1 d
<WindowsService(name='APNMCP', display_name='Ask Update Service') at 38850160>,
) x3 u5 a& @; h9 |) ~/ o4 T) Q, ^ <WindowsService(name='AppIDSvc', display_name='Application Identity') at 38850192>,
$ t, v3 D4 Q% ^6 p2 t! a: o ...]# @; G4 j( w  b; i9 |+ m7 t
>>> s = psutil.win_service_get('alg')
+ X" ?5 y' j; C# C$ O0 D2 H/ S>>> s.as_dict()3 m- f2 M* |# U- {0 z
{'binpath': 'C:\\Windows\\System32\\alg.exe',
, ^5 t& I  s; ]0 I5 x$ a, X 'description': 'Provides support for 3rd party protocol plug-ins for Internet Connection Sharing',( \" O* M5 ~- z! X! {/ d3 K
'display_name': 'Application Layer Gateway Service',
& a/ Z! _, S1 B* E8 d. i 'name': 'alg',
9 }2 f# M3 B1 s* g 'pid': None,% j6 p$ Q! P" |# O( v5 X+ m( O
'start_type': 'manual',
# K+ C2 p+ T, e1 d 'status': 'stopped',
! f% c8 c/ c9 `/ e5 d 'username': 'NT AUTHORITY\\LocalService'}
8 {" C& v- n6 sOther samples

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-12-23 21:09:49 | 显示全部楼层
Installing using pip on UNIX
6 r. \( W1 [' s# e# A7 g: ?( n
$ o' b# W' p4 L, ~( KThe 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:
9 W. V, x8 `' H) j
  N. ?% S+ f* f1 a! z* D0 P$ wget https://bootstrap.pypa.io/get-pip.py( a; _2 |' C9 A4 n' Q. ^% S
$ python get-pip.py
) {4 t* Q  i. _" X: ]...then run:
$ ^/ G; i# e$ \+ U! G/ a& s( Q# C; y' `0 t: F  g$ f: |1 y* b" Y
$ pip install psutil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:20 , Processed in 0.037919 second(s), 33 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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