python3获取服务器运行状态及进程详细信息

有了这些信息我们就可以对linux服务器做监控了,也可以对所有的项目进行状态监控了
linux 服务器状态

import psutil  # 进程运行情况
import platform  # 包含系统信息查询函数
import os
import logging
#
# # 硬件信息
svmem = psutil.virtual_memory()
mem_total = svmem.total  # 系统内存总数
mem_used = svmem.used  # 内存已使用
mem_free = svmem.free  # 内存空闲大小
mem_per = svmem.percent  # 内存使用率
system_version = platform.linux_distribution()  # 获取linux发行版本详细信息
system_machine = platform.machine()  # 获取操作系统架构
with open('/proc/cpuinfo') as f:  # 获取cpu型号
    for line in f:
        if line.strip():
            if line.rstrip('\n').startswith('model name'):
                cpu_name = line.rstrip('\n').split(':')[1]
                break
cpu_type = cpu_name.split()[0]
cpu_count = psutil.cpu_count()  # cpu核数
host_name = platform.node()  # 电脑名称
stinfo = os.statvfs('/home')
print('CPU使用率', psutil.cpu_percent(1))
print('每个核的cpu使用率', psutil.cpu_percent(percpu=True))
print('硬盘使用', psutil.disk_usage("/home").percent)
# stinfo = os.statvfs('/')
st_info = stinfo.f_bsize * stinfo.f_blocks / 1024 / 1024 / 1024  # 获取磁盘大小
st_free_info = stinfo.f_bavail * stinfo.f_frsize / 1024 / 1024 / 1024  # 磁盘剩余大小
print('系统内存总数', mem_total)
print('内存已使用', mem_used)
print('内存空闲大小', mem_free)
print('内存使用率', mem_per)
print('cpu核数', cpu_count)
print('电脑名称', host_name)
print('获取磁盘大小', st_info)
print('磁盘剩余大小', st_free_info)
# os.system('python3 /home/KL/DigapisKl/mastercontrol/es_search.py')
if mem_per >= 90:
    print(1)
a = '%.2f' % (st_free_info / st_info)
print(a)

当前运行进程数量

from __future__ import print_function
import os


def process_list():
    pids = []
    for subdir in os.listdir('/proc'):
        if subdir.isdigit():
            pids.append(subdir)
    return pids


if __name__ == '__main__':
    pids = process_list()
    print('Total number of running processes:: {0}'.format(len(pids)))

当前运行进程详细信息

import psutil
import csv
def processInfo():
    """
    获取全部进程信息
    :return: list
    """
    filename = open('./进程信息' + '.csv', 'a', newline='', encoding='utf-8')
    csv_write = csv.writer(filename, dialect='excel')
    heard = ['进程编号','进程名称','执行路径','当前路径','启动命令','父进程ID','父进程','状态','进程用户名','进程创建时间','终端','执行时间','内存信息','打开的文件','相关网络连接','线程数','线程','环境变量',]
    csv_write.writerow(heard)
    # 定义一个获取进程属性的方法
    def getProperty(process, pro: str):
        try:
            ret = eval('process.' + pro)()
        except Exception as e:
            return ''
        return ret

    pids = psutil.pids()

    output = {}
    for pid in pids:
        print(pid)
        usar = []
        try:
            process = psutil.Process(pid)
            parent = getProperty(process, 'parent')
            if parent is str or parent is None:
                parentName = ''
            else:
                parentName = parent.name()
            output[pid] = {
                '进程编号': pid,
                '进程名称': process.name(),
                '执行路径': getProperty(process, 'exe'),
                '当前路径': getProperty(process, 'cwd'),
                '启动命令': getProperty(process, 'cmdline'),
                '父进程ID': process.ppid(),
                '父进程': parentName,
                '状态': process.status(),
                '进程用户名': getProperty(process, 'username'),
                '进程创建时间': process.create_time(),
                '终端': getProperty(process, 'terminal'),
                '执行时间': process.cpu_times(),
                '内存信息': process.memory_info(),
                '打开的文件': getProperty(process, 'open_files'),
                '相关网络连接': process.connections(),
                '线程数': process.num_threads(),
                '线程': getProperty(process, 'threads'),
                '环境变量': getProperty(process, 'environ'),
            }
            usar.append(output[pid]['进程编号'])
            usar.append(output[pid]['进程名称'])
            usar.append(output[pid]['执行路径'])
            usar.append(output[pid]['当前路径'])
            usar.append(output[pid]['启动命令'])
            usar.append(output[pid]['父进程ID'])
            usar.append(output[pid]['父进程'])
            usar.append(output[pid]['状态'])
            usar.append(output[pid]['进程用户名'])
            usar.append(output[pid]['进程创建时间'])
            usar.append(output[pid]['终端'])
            usar.append(output[pid]['执行时间'])
            usar.append(output[pid]['内存信息'])
            usar.append(output[pid]['打开的文件'])
            usar.append(output[pid]['相关网络连接'])
            usar.append(output[pid]['线程数'])
            usar.append(output[pid]['线程'])
            usar.append(output[pid]['环境变量'])


            print(output[pid]['进程编号'])
            csv_write.writerow(usar)

        except Exception as result:
            print(result)

    return output
a = processInfo()
print(len(a))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值