参考文章:python系统性能统计(CPU占用率,磁盘使用率,内存占用率,系统平均负载
参考文章:Python运维自动化psutil 模块详解(超级详细)
模块导入:import psutil
- 获取服务器内存信息
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
print(virtual_memory)
memory_info = "总共内存:%s, 可用内存:%s, 内存使用:%s,使用率%0.1f%%,剩余内存:%s" % (virtual_memory_count,aval_memory,used_memory, memory_percent, free_memory)
print(memory_info)
ge_mem_info()
参考文章:python统计电脑内存,cpu,磁盘使用情况
- 获取服务器cpu信息
def get_cpu_info():
"""
获取cpu信息
"""
# 查看cpu物理个数的信息
print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
# cpu的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print("cup使用率: %s" % cpu)
get_cpu_info()
参考文章:python 获取内存和cpu的使用率
- 获取磁盘信息
def get_disk_info():
"""
获取磁盘信息
"""
F_BSIZE = 0
F_BLOCKS = 2
F_BAVAIL = 4
# 循环磁盘分区
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)
print(disk_mount,"--",vfs)
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%%, 剩余空间:%iG" % (disk_name, str(used_per), free_disk//1024//1024//1024)
print(disk_info)
get_disk_info()
- 获取网络信息
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))
get_net_info()
参考文章:Python编程——psutil模块的使用详解
服务器系统监控脚本
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)
# 获取系统启动时间
print("系统启动时间: %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()])
print("当前有%s个用户,分别是 %s" % (users_count, users_list))
def get_cpu_info():
"""
获取cpu信息
"""
# 查看cpu物理个数的信息
print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
# cpu的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print("cup使用率: %s" % cpu)
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
print(virtual_memory)
memory_info = "总共内存:%s, 可用内存:%s, 内存使用:%s,使用率%0.1f%%,剩余内存:%s" % (virtual_memory_count,aval_memory,used_memory, memory_percent, free_memory)
print(memory_info)
def get_disk_info():
"""
获取磁盘信息
"""
F_BSIZE = 0
F_BLOCKS = 2
F_BAVAIL = 4
# 循环磁盘分区
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)
print(disk_mount,"--",vfs)
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%%, 剩余空间:%iG" % (disk_name, str(used_per), free_disk//1024//1024//1024)
print(disk_info)
def get_pid_info():
"""
获取进程信息
"""
# 查看系统全部进程
for pnum in psutil.pids():
p = psutil.Process(pnum)
print("进程名 %-20s 内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " % (p.name(), p.memory_percent(), p.status(), p.create_time()))
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))
get_sys_info()
get_cpu_info()
ge_mem_info()
get_disk_info()
get_pid_info()
get_net_info()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)