最近在深入学习python,买了本Python书-系统管理与自动化运维,发现真实一本有实际经验的作者写的,是一本好书。
在开始之前可以使用: pip3 completion --bash >> .profile 来配置python3的命令补全,环境变量需要在此引用,source .profile 或者. .profile 。
psutil库的详细使用方法在官网psutil · PyPI 上有,可参考。
在前期笔者使用了psutil库来完成简单的打印磁盘和内存信息,运行结果如下图。
代码也很简单,磁盘信息调用库的psutil.virtual_memory()函数,内存信息调用 psutil.disk_usage('/')函数。
今天看到一章节时用来详细介绍这个库的,于是测试记录于此。psutil库可用省去解析/proc下文件的烦恼,提高工作效率、提示程序的可维护性。
一、cpu
1、cpu个数
psutil.cpu_count(),逻辑cpu个数;
psutil.cpu_count(logical=False),物理cpu个数。
2、cpu利用率
psutil.cpu_percent(),获取cpu利用率;
psutil.cpu_percent(percpu=True),获取每个cpu的利用率,笔者时单核所以只返回一个利用率,默认获取整体cpu利用率;
psutil.cpu_percent(interval=1,percpu=True),获取interval时间内的cpu利用率,否则获取上一次调用cpu_percent这段时间的cpu利用率。
3、cpu时间花费
psutil.cpu_times(),以命名元组的形式返回cpu花费时间;
psutil.cpu_times(percpu=True),和cpu利用率一样,percpu指定单个cpu的花费时间。
4、cpu耗费时间的比例
psutil.cpu_times_percent(),返回cpu耗费时间的比例;
psutil.cpu_times_percent(percpu=True),和cpu时间花费一样,percpu指定单个cpu的花费时间比例。
5、cpu统计信息
psutil.cpu_stats(),以命名元组的形式返回cpu统计信息,包括上下文切换、中断、软中断和系统调用次数。
二、内存
内存使用情况
psutil.virtual_memory(),以命名元组的形式返回内存使用情况,包括总内存、可用内存、内存利用率、buffer、cache等,出内存利用率外,其他字段都以字节为单位返回。此函数和free命令类似。
psutil.swap_memory(),以命名元组的形式返回swap使用情况。
三、磁盘
1、挂载的磁盘
psutil.disk_partitions(),以命名元组的形式返回所有已经挂载的磁盘,包括磁盘名称、挂载点、文件系统类型等信息。
2、磁盘使用情况
psutil.disk_usage('/'),类似于df命令,包括磁盘容量、已使用容量、利用率等。
3、磁盘io统计信息
psutil.disk_io_counters(),返回磁盘io统计信息,,包括读写次数、读写字节等;
psutil.disk_io_counters(perdisk=True),与上面的区别是分磁盘返回磁盘io统计信息。
四、网络
1、网络io统计信息
psutil.net_io_counters(),返回网络io统计信息,包括收发字节数、收发包数、出错情况和删包情况。此函数与/proc/net/dev文件内容一样。
psutil.net_io_counters(pernic=True),返回每个网卡网络io统计信息。
2、网络连接详细信息
psutil.net_connections(),以列表的形式返回每个网络连接的详细信息,查看网络连接状态和统计连接个数。
3、网卡配置信息
psutil.net_if_addrs(),以字典的形式返回网卡的配置信息。
4、网卡详细信息
psutil.net_if_stats(),返回网卡的详细信息。
五、进程
1、process进程
psutil.Process(),查看当前进程信息;
psutil.Process(1),查看pid为1的进程信息。
process类里面有定义很多方法,比如:
python_pro=psutil.Process(1870)查看python进程并赋值给 python_pro;
python_pro.name(),进程名称;
python_pro.create_time(),进程创建时间
python_pro.is_running(),进程是否运行。
2、当前正在运行的进程pids
psutil.pids(),当正在运行的进程pid;
psutil.pids()[:4],前四个正在运行的进程pid。
3、进程是否存在
psutil.pid_exists(1),判断一号进程是否存在。
六、其他功能
1、当前登录用户信息
psutil.users(),返回当前登陆用户信息,包括用户名、登陆终端、终端ip,登陆时间等。
2、系统启动时间
psutil.boot_time(),以时间戳的形式返回系统启动时间
七、综合监控程序