返回列表 发帖

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
<class 'float'>
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
<class 'float'>
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
<class 'int'>
[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
<class 'float'>
----------
132776
网卡接收字节数: 129.66 Kb/s
129.66
<class 'float'>
[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

返回列表