最近开始学习Python自动化运维,特记下笔记。
学习中使用的系统是Kali Linux2017.2,Python版本为2.7.14+
因为在KALI里面没有自带psutil模块,需要使用pip进行安装
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/0a962b6b5fc200c488cbbe6cf4066b22.png)
安装完成后进入python交互模式
查看psutil 的帮助信息,可以发现psutil支持跨平台的环境,同时也支持python3
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/77c2dd305ceb85cc06dc82e02513e705.png)
获取CPU信息
使用cpu_times获取CPU信息,用户/系统/空闲时间
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/b4736b12df60b30e68af64094f6e0364.png)
也可以获取单条信息
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/7c3d2922c0d2cd6e83c49ac3502b68d8.png)
如果需要获取所有CPU核心的信息需要加一个参数percpu=True
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/c4ee1a84fee4f0d6b1977560684034fa.png)
获取CPU核心个数,方法为cpu_count()
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/978716abf4052b5243fa33de358a8e1b.png)
如果只要获取CPU物理核心的数量需要加一个参数,logical=False 注:logical默认为True
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/68af3a7c687d92ab66827467680c2e24.png)
获取内存信息
内存信息可以使用virtual_memory()和swap_memory()方法进行获取 注:单位为字节
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/3eede0ba0545363589239b05c516dfe7.png)
只获取内存总数
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/223ac0675a53de4a92db4276fb775304.png)
只获取空闲总数
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/a43544c3269cc703fc7f9e95897cd4df.png)
获取swap分区信息,使用swap_memory()方法进行获取
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/2ba5b3a34a1102213328c6389c9637df.png)
获取磁盘信息
获取磁盘分区信息可以使用disk_partitions()方法获取
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/77f2231f7c091df4251a7c8aa88bed57.png)
可以使用disk_usage()方法获取分区的使用情况
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/874e2f5dfdc78b36f0f2013083b7d030.png)
获取硬盘IO信息可以使用disk_io_counters()方法获取
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/5a8e72358d4970243f7e834b26b456ab.png)
如果要获取单个分区的IO数等情况,需要在disk_io_counters()下加一个参数,perdisk=True
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/6c8eb10844cd83a246e181047f6dc32d.png)
获取网络信息
获取网卡的总IO等信息可以使用net_io_counters()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/961ad44f07f94be3465267597b7fd2c3.png)
如果需要输出每一个网卡的IO数需要加一个参数pernic=True
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/906ff7a75fe48281f001badfd021c4b9.png)
也可以获取网卡IO的单个信息
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/8b63f821fcf56edbc91a6f8c8699ef42.png)
获取其他的一些系统信息
返回当前登录系统的用户信息 ,users()方法 注:started返回的为Linux时间戳
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/5d8d3445ec100c1edf4f6917ff7830ca.png)
获取开机时间,同样使用Linux时间戳来返回,使用boot_time()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/dde0548d664e237f318fe72ca1826503.png)
系统进程管理
获取所有进程PID,使用pids()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/864d5fc42f6bed391c6ac86e9bb3f6e0.png)
可以使用Process()方法获取单个进程的信息,先要实例化一个对象,参数为pid值,例:pid为960
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/936a52d32821f573794497c503db1e52.png)
获取实例化的进程名,name()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/e5029f6cac82fc821d341377412f7b7a.png)
获取进程bin路径,exe()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/11aa30cd564216c162d6542560a20192.png)
获取进程工作绝对路径目录,cwd()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/218bcc7a745ffca682d9b8ed20d9cc85.png)
获取进程状态,status()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/60cdd9cfac538db79b379d0e41f35c4a.png)
获取进程创建时间,create_time()方法 注:时间为Linux时间戳
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/9f6c644bd118db30575d59df5b94221a.png)
获取进程uid与gid信息,uids()与gids()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/4b7cf55796f5ec0d56b28af8171e5b4c.png)
获取进程cpu时间信息,cpu_times()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/5898266f84914f0c4751077a112250d2.png)
获取进程与CPU的亲和度,cpu_affinity()方法,可以将CPU号作为参数来设置进程CPU亲和性
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/3c565c88045bef6ce779524d06d79528.png)
获取进程内存使用率,memory_percent()方法,单位为百分比
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/704248e8b1d5858324775deb844345e5.png)
获取进程IO信息,io_counters()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/c6938dcba73018adf248b05e4e37baad.png)
获取进程内存rss、vms等信息,memory_info()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/d85d62f2e1f8c72859bcaf45a929cea2.png)
获取进程开启的线程数,num_threads()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/76e19e43b4ce78fbb2702033e6e9edc7.png)
获取进程的线程信息,threads()方法
![Python运维之psutil模块](https://i-blog.csdnimg.cn/blog_migrate/5fe3504cac57d0b6b93963c3c8ccb483.png)
Popen类的使用
Popen类可以获取用户启动应用程序的情况,以便跟踪程序的运行状态 例:跟踪python的运行情况
name()方法获取进程名,username()方法获取启动用户,cpu_times()方法获取进程运行的CPU时间
转载于:https://blog.51cto.com/screenfreezer/2124800