131 lines
3.9 KiB
Python
131 lines
3.9 KiB
Python
# _*_ coding: utf-8 _*_
|
||
# @Time :2022/5/29 14:54
|
||
# @Email :508737091@qq.com
|
||
# @Author :qiangyanwen
|
||
# @File :mem.py.py
|
||
import os
|
||
import psutil
|
||
import datetime
|
||
import time
|
||
|
||
|
||
def get_sys_info():
|
||
"""
|
||
获取系统信息
|
||
"""
|
||
# 当前时间
|
||
now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
|
||
# print("当前时间:", now_time)
|
||
# 获取系统启动时间
|
||
system_start_info = "系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
|
||
# 获取系统用户
|
||
users_count = len(psutil.users())
|
||
users_list = ",".join([u.name for u in psutil.users()])
|
||
users_info = "当前有%s个用户,分别是 %s" % (users_count, users_list)
|
||
sys_info = {"now_time": now_time, "system_start_time": system_start_info, "users_info": users_info}
|
||
return sys_info
|
||
|
||
|
||
def get_cpu_info():
|
||
"""
|
||
获取cpu信息
|
||
"""
|
||
# 查看cpu物理个数的信息
|
||
# print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
|
||
cpu_count = psutil.cpu_count(logical=False)
|
||
# cpu的使用率
|
||
cpu = (str(psutil.cpu_percent(1))) + '%'
|
||
cp = "cup使用率: %s" % cpu
|
||
cpu_info={"cpu_count":cpu_count,"cpu_usage":cpu}
|
||
return cpu_info
|
||
|
||
|
||
def bytes2human(n):
|
||
"""
|
||
内存单位转换
|
||
:param n:
|
||
:return:
|
||
"""
|
||
symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
|
||
prefix = {}
|
||
for i, s in enumerate(symbols):
|
||
prefix[s] = 1 << (i + 1) * 10
|
||
for s in reversed(symbols):
|
||
if n >= prefix[s]:
|
||
value = float(n) / prefix[s]
|
||
return '%.1f%s' % (value, s)
|
||
return '%sB' % n
|
||
|
||
|
||
def ge_mem_info():
|
||
"""
|
||
获取内存信息
|
||
"""
|
||
virtual_memory = psutil.virtual_memory()
|
||
virtual_memory_count = bytes2human(virtual_memory.total)
|
||
used_memory = bytes2human(virtual_memory.used)
|
||
free_memory = bytes2human(virtual_memory.free)
|
||
aval_memory = bytes2human(virtual_memory.available)
|
||
memory_percent = virtual_memory.percent
|
||
# memory_info = "总共内存:%s, 可用内存:%s, 内存使用:%s,使用率%0.1f%%,剩余内存:%s" % (
|
||
# virtual_memory_count, aval_memory, used_memory, memory_percent, free_memory)
|
||
mem_info={
|
||
"total_memory": virtual_memory_count,
|
||
"aval_memory":aval_memory,
|
||
"memory_usage":used_memory,
|
||
"memory_percent":memory_percent,
|
||
"free_memory":free_memory
|
||
|
||
}
|
||
return mem_info
|
||
|
||
|
||
def get_disk_info():
|
||
"""
|
||
获取磁盘信息
|
||
"""
|
||
F_BSIZE = 0
|
||
F_BLOCKS = 2
|
||
F_BAVAIL = 4
|
||
# 循环磁盘分区
|
||
disks = []
|
||
for disk in psutil.disk_partitions():
|
||
# 读写方式 光盘 or 有效磁盘类型
|
||
if 'cdrom' in disk.opts or disk.fstype == '':
|
||
continue
|
||
disk_name_arr = disk.device.split(':')
|
||
disk_name = disk_name_arr[0]
|
||
disk_mount = disk.mountpoint
|
||
vfs = os.statvfs(disk_mount)
|
||
total_disk = vfs[F_BLOCKS] * vfs[F_BSIZE]
|
||
free_disk = vfs[F_BAVAIL] * vfs[F_BSIZE]
|
||
used_disk = total_disk - free_disk
|
||
used_per = round((float(used_disk) / total_disk) * 100, 4)
|
||
# 当前磁盘使用率和剩余空间G信息
|
||
# disk_info = "%s盘使用率:%s%%, 剩余空间:%iGB" % (disk_name, str(used_per), free_disk//1024//1024//1024)
|
||
disk_info ={"path":disk_name,"usage":str(used_per),"space":free_disk//1024//1024//1024//1024}
|
||
disks.append(disk_info)
|
||
return disks
|
||
|
||
|
||
|
||
|
||
|
||
def get_net_info():
|
||
"""
|
||
获取网络信息
|
||
"""
|
||
net = psutil.net_io_counters()
|
||
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
|
||
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
|
||
print("网卡接收数据 %s 网卡发送数据 %s" % (bytes_rcvd, bytes_sent))
|
||
|
||
|
||
if __name__ == '__main__':
|
||
now_time,users_info,system_start_info = get_sys_info()
|
||
print(now_time,users_info,system_start_info)
|
||
get_cpu_info()
|
||
ge_mem_info()
|
||
disk = get_disk_info()
|
||
print(disk)
|
||
get_net_info() |