python自动化运维系统进程管理

一 点睛

获得当前系统的进程信息,可以让运维人员得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU亲和度、内存使用率、IO 信息、socket连接、线程数等,这些信息可以呈现出指定进程是否存活、资源利用情况,为开发人员的代码优化、问题定位提供很好的数据参考。

二 进程信息

1 点睛

psutil模块在获取进程信息方面也提供了很好的支持,包括使用 psutil.pids()方法获取所有进程PID,使用psutil.Process()方法获取单个进程的名称、路径、状态、系统资源利用率等信息。

2 实战

>>> psutil.pids()     #列出所有进程PID
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 30, 31, 32, 33, 41, 43, 44, 45, 65, 98, 272, 274, 276, 278, 280, 296, 297, 302, 304, 368, 369, 378, 379, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 474, 494, 505, 506, 520, 596, 597, 598, 599, 600, 601, 602, 603, 606, 609, 610, 612, 613, 620, 621, 622, 623, 624, 625, 626, 627, 641, 650, 651, 669, 688, 690, 692, 694, 718, 745, 776, 804, 857, 1116, 1118, 1119, 1122, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1146, 1147, 1148, 1149, 1150, 1151, 1153, 1154, 1155, 1156, 1157, 1159, 1163, 1164, 1165, 1166, 1167, 1169, 1170, 1171, 1180, 1181, 1184, 1459, 1460, 1461, 1474, 1481, 1518, 1519, 1520, 1523, 1524, 1525, 1526, 1528, 1529, 1530, 1531, 1532, 1543, 1558, 1559, 1777, 2204, 2207, 2211, 2212, 2216, 2217, 2288, 2291, 2292, 2332, 2371, 2378, 2395, 2396, 2397, 2398, 2400, 2408, 2409, 2412, 2414, 2415, 2417, 2422, 2423, 2507, 2518, 2519, 2521, 2522, 2523, 2526, 2531, 2600, 2602, 2603, 2605, 2606, 2607, 2608, 2609, 2611, 2632, 2633, 2637, 2638, 2662, 2674, 2675, 2679, 2681, 2747, 2875, 3029, 3030, 3176, 3180, 3182, 3309, 3437, 3489, 3497, 3839, 3905, 4366, 4937, 5069, 5184, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198, 5199, 5200, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5580, 5796, 6093, 6286, 6396, 6460, 6636, 6654, 6661, 6663, 6664]
>>> p = psutil.Process(1149)        #实例化一个Process对象,参数为一进程PID
>>> p.name()        #进程名
'swift-account-s'
>>> p.exe()              #进程bin路径
'/usr/bin/python2.7'
>>> p.cwd()           #进程工作目录绝对路径
'/'
>>> p.status()                  #进程状态
'sleeping'
>>> p.create_time()              #进程创建时间,时间戳格式
1550281626.81
>>> p.uids()                  #进程uid信息
puids(real=160, effective=160, saved=160)
>>> p.cpu_times()          #进程CPU时间信息,包括user、system两个CPU时间
pcputimes(user=30.81, system=3.52, children_user=0.01, children_system=0.06)
>>> p.cpu_affinity()          # 进程CPU亲和度,如要设置进程CPU亲和度,将CPU号作为参数即 可
[0, 1]
>>> p.memory_percent()          #进程内存利用率
0.12030696653293782
>>> p.memory_info()           #进程内存rss、vms信息
pmem(rss=6033408, vms=265097216, shared=2650112, text=4096, lib=0, data=18821120, dirty=0)
>>> p.io_counters()            #进程IO信息,包括读写IO数及字节数
pio(read_count=5224, write_count=58, read_bytes=659456, write_bytes=0)
>>> p.connections()  #返回打开进程socket的namedutples列表,包括fs、family、 laddr等信息
[pconn(fd=4, family=2, type=1, laddr=('192.168.0.120', 6002), raddr=(), status='LISTEN')]
>>> p.num_threads()   #进程开启的线程数
1

三 popen类的使用

1 点睛

psutil提供的popen类的作用是获取用户启动的应用程序进程信息, 以便跟踪程序进程的运行状态。

2 实战

>>> from subprocess import PIPE
>>> p = psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE) #通过psutil的Popen方法启动的应用程序,可以跟踪该程序运行的所有相关信息
>>> p.name()
'python'
>>> p.username()
'root'
>>> p.communicate()
('hello\n', None)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值