Board logo

标题: Linux使用第三方库psutil [打印本页]

作者: admin    时间: 2019-9-24 22:17     标题: Linux使用第三方库psutil

操作系统的版本信息: [root@centos6 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@centos6 ~]# [root@centos6 ~]# uname -r 2.6.32-696.el6.x86_64 Python的版本信息: [root@centos6 ~]# python3 --version Python 3.6.8 服务器连接公网安装第三方库(psutil):(可以指定软件的版本) [root@centos6 ~]# pip3 install psutil==5.7.3 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com Looking in indexes: http://mirrors.aliyun.com/pypi/simple Collecting psutil==5.7.3 Downloading http://mirrors.aliyun.com/pypi/packages/33/e0/82d459af36bda999f82c7ea86c67610591cf5556168f48fd6509e5fa154d/psutil-5.7.3.tar.gz (465kB) 100% |████████████████████████████████| 471kB 313kB/s Installing collected packages: psutil Running setup.py install for psutil ... done Successfully installed psutil-5.7.3 [root@centos6 ~]# 由此还可以得获得软件包的下载地址:(需要另外手动下载软件包) [root@centos6 ~]# wget http://mirrors.aliyun.com/pypi/packages/33/e0/82d459af36bda999f82c7ea86c67610591cf5556168f48fd6509e5fa154d/psutil-5.7.3.tar.gz 软件包下载成功: [root@centos6 ~]# du -sh psutil-5.7.3.tar.gz 456K psutil-5.7.3.tar.gz [root@centos6 ~]# ###### 列出当前环境所有已经安装的第三方库的名称和其版本号: [root@centos6 ~]# pip3 freeze psutil==5.7.3 [root@centos6 ~]# 保存当前环境所有已经安装的第三方库的名称和其版本号信息: [root@centos6 ~]# pip3 freeze > 1.txt [root@centos6 ~]# [root@centos6 ~]# cat 1.txt psutil==5.7.3 [root@centos6 ~]# ###### Linux下卸载安装好的第三方库(psutil): [root@centos6 ~]# pip3 uninstall psutil -y Uninstalling psutil-5.7.3: Successfully uninstalled psutil-5.7.3 [root@centos6 ~]# ###### Linux下离线安装第三方库(psutil): [root@centos6 ~]# ls *.tar.gz psutil-5.7.3.tar.gz [root@centos6 ~]# tar -zxvf psutil-5.7.3.tar.gz [root@centos6 ~]# cd psutil-5.7.3 [root@centos6 psutil-5.7.3]# ls *.py setup.py [root@centos6 psutil-5.7.3]# python3 setup.py install ###### 查看本机的CPU使用率、内存使用率、分区使用率等等的脚本: [root@centos6 ~]# cat check.py #coding=utf-8 import psutil CPU_use_percent = psutil.cpu_percent(interval=2) print(CPU_use_percent) print(type(CPU_use_percent)) print(f"CPU使用率: {CPU_use_percent}%") print("-" * 10) Mem_total = psutil.virtual_memory().total Mem_total = round(Mem_total / 1024 / 1024,2) print(f"总内存量: {Mem_total}MB") Mem_used = psutil.virtual_memory().used Mem_used = round(Mem_used / 1024 / 1024,2) print(f"已使用内存量: {Mem_used}MB") print("-" * 10) Mem_use_percent = psutil.virtual_memory().percent print(Mem_use_percent) print(f"内存使用率: {Mem_use_percent}%") print("-" * 10) Root_total = psutil.disk_usage("/")[0] Root_total = round(Root_total / 1024 / 1024 /1024,2) print(f"根分区总大小:{Root_total}GB") Root_used = psutil.disk_usage("/")[1] Root_used = round(Root_used / 1024 / 1024 / 1024,2) print(f"根分区已使用量: {Root_used}GB") Root_free = psutil.disk_usage("/")[2] Root_free = round(Root_free / 1024 / 1024 / 1024,2) print(f"根分区空闲量: {Root_free}GB") Root_used_percent = psutil.disk_usage("/")[3] print(f"根分区使用率: {Root_used_percent}%") print("-" * 10) Boot_used_percent = psutil.disk_usage("/boot")[3] print(f"分区/boot的使用率: {Boot_used_percent}%") 设置脚本权限: [root@centos6 ~]# chmod a+x check.py 运行脚本的结果: [root@centos6 ~]# python3 check.py 1.0 CPU使用率: 1.0% ---------- 总内存量: 980.58MB 已使用内存量: 273.46MB ---------- 41.2 内存使用率: 41.2% ---------- 根分区总大小:93.88GB 根分区已使用量: 4.26GB 根分区空闲量: 84.85GB 根分区使用率: 4.8% ---------- 分区/boot的使用率: 7.5% [root@centos6 ~]# 假如计算结果不是很精确,可以手动修改一下: Mem_use_percent = Mem_use_percent - 10 Mem_use_percent = "%.1f" % Mem_use_percent #保留一位小数 Mem_use_percent = float(Mem_use_percent) 图片1.png 再次运行脚本的结果: [root@centos6 ~]# python3 check.py 1.5 CPU使用率: 1.5% ---------- 总内存量: 980.58MB 已使用内存量: 274.02MB ---------- 31.3 内存使用率: 31.3% ---------- 根分区总大小:93.88GB 根分区已使用量: 4.26GB 根分区空闲量: 84.85GB 根分区使用率: 4.8% ---------- 分区/boot的使用率: 7.5% [root@centos6 ~]# 备注:CPU使用率、内存使用率的值是有波动的。 ###### 查看当前已登录操作系统的用户信息的脚本: [root@centos6 ~]# cat xx.py #coding=utf-8 import psutil def func_user(): print(psutil.users()) print("-" * 10) users_list = ",".join([ u.name for u in psutil.users()]) print(f"当前已登录的用户分别是:{users_list}") users_terminal = ",".join([ u.terminal for u in psutil.users()]) print(f"用户的终端分别是:{users_terminal}") users_host = ",".join([ u.host for u in psutil.users()]) print(f"用户的终端登录IP地址分别是:{users_host}") users_pid = ",".join([ str(u.pid) for u in psutil.users()]) # u.pid 必须先要转换为字符串 print(f"用户的进程号(PID)分别是:{users_pid}") print("-" * 10) users_count = len(psutil.users()) #当前已登录的用户数量 print(f"当前已登录的用户有{users_count}个。") return users_count if __name__ == '__main__': user_counts = func_user() print(user_counts) print(type(user_counts)) 运行脚本的结果: [root@centos6 ~]# python3 xx.py [suser(name='zhuohua', terminal='tty1', host='', started=1646905088.0, pid=1975), suser(name='root', terminal='pts/0', host='192.168.168.133', started=1646905088.0, pid=2146), suser(name='root', terminal='pts/1', host='192.168.168.133', started=1646905216.0, pid=2176)] ---------- 当前已登录的用户分别是:zhuohua,root,root 用户的终端分别是:tty1,pts/0,pts/1 用户的终端登录IP地址分别是:,192.168.168.133,192.168.168.133 用户的进程号(PID)分别是:1975,2146,2176 ---------- 当前已登录的用户有3个。 3 [root@centos6 ~]# 注释: 用户zhuohua 在服务器本地登录; 用户root 在远程终端(192.168.168.133)同时登录了两个; ###### 查看当前网卡发送、接收的总流量的脚本: [root@centos6 ~]# cat yy.py #coding=utf-8 import psutil def func_net_sent(): # 网卡发送总流量 global net net = psutil.net_io_counters() print(net) print("-" * 10) print(net.bytes_sent) bytes_sent = round(net.bytes_sent / 1024,2) print(f"网卡发送字节数: {bytes_sent} Kb/s") return bytes_sent def func_net_receive(): # 网卡接收总流量 print("-" * 10) print(net.bytes_recv) bytes_receive = round(net.bytes_recv / 1024,2) print(f"网卡接收字节数: {bytes_receive} Kb/s") return bytes_receive if __name__ == '__main__': net_sent = func_net_sent() print(net_sent) print(type(net_sent)) net_receive = func_net_receive() print(net_receive) print(type(net_receive)) 运行脚本的结果: [root@centos6 ~]# python3 yy.py snetio(bytes_sent=136162, bytes_recv=132776, packets_sent=1695, packets_recv=1871, errin=0, errout=0, dropin=0, dropout=0) ---------- 136162 网卡发送字节数: 132.97 Kb/s 132.97 ---------- 132776 网卡接收字节数: 129.66 Kb/s 129.66 [root@centos6 ~]# ###### 查看操作系统开机时长的脚本: [root@centos6 ~]# cat zz.py #coding=utf-8 import psutil from datetime import datetime def func1(): boot_time = psutil.boot_time() boot_time_obj = datetime.fromtimestamp(boot_time) print(boot_time_obj) now_time = datetime.now() print(now_time) delta_time = now_time - boot_time_obj print(delta_time) print("-" * 10) Boot = str(boot_time_obj).split('.')[0] Now = str(now_time).split('.')[0] Delta = str(delta_time).split('.')[0] print("开机时间: ", Boot) print("当前时间: ", Now) print("开机时长: ", Delta) print("-" * 10) String_1 = str(delta_time).split(':')[0] String_2 = int(String_1) #字符串转整数 print(String_2) if String_2 == 0: func2() else: func3() def func2(): print("开机时长小于一小时") def func3(): print("开机时长等于或超过一小时") if __name__ == '__main__': func1() 运行脚本的结果:(开机时长小于一小时的时候) [root@centos6 ~]# python3 zz.py 2019-03-10 18:43:02 2019-03-10 19:18:09.434350 0:35:07.434350 ---------- 开机时间: 2019-03-10 18:43:02 当前时间: 2019-03-10 19:18:09 开机时长: 0:35:07 ---------- 0 开机时长小于一小时 [root@centos6 ~]# 运行脚本的结果:(开机时长等于或超过一小时的时候) [root@centos6 ~]# python3 zz.py 2019-03-10 18:43:02 2019-03-10 19:43:31.660306 1:00:29.660306 ---------- 开机时间: 2019-03-10 18:43:02 当前时间: 2019-03-10 19:43:31 开机时长: 1:00:29 ---------- 1 开机时长等于或超过一小时 [root@centos6 ~]# 相关文章: CentOS8使用psutil+新浪邮箱使用465端口发送邮件 CentOS8使用Virtual Environment join()函数 Python3使用Socket发送信息 Python3使用126邮箱的465端口发送邮件 Zabbix调用Python3脚本监控Linux进程/内存使用率/分区使用率 ################################# ################################# 亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^ 苏泊尔多功能电热锅韩式电火锅8-10人家用电炒锅不粘锅电锅电烤锅 guo.png 苏泊尔电火锅多功能家用电热锅不沾锅一体电煮锅宿舍4-6人 huoguo.png

图片附件: guo.png (2020-5-19 14:02, 470.68 KB) / 下载次数 73
http://blog.zhuohua.store/attachment.php?aid=7090&k=0434c27d86b5931fda4a43695c8e26da&t=1714632764&sid=VIW1ti



图片附件: huoguo.png (2020-5-19 14:02, 444 KB) / 下载次数 66
http://blog.zhuohua.store/attachment.php?aid=7091&k=90e0bada3194918a5f56da60a649ab1b&t=1714632764&sid=VIW1ti



图片附件: 图片1.png (2022-3-11 14:46, 36.79 KB) / 下载次数 109
http://blog.zhuohua.store/attachment.php?aid=19184&k=4ab4d7e7b136a0de9df8a988474cb4f9&t=1714632764&sid=VIW1ti






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2