Python & Ubuntu 获取进程信息

备忘,其实是想知道该进程使用的内存状况。

首先要获取系统的内存信息:

def memory_stat():
    ‘‘‘
        return the memory info
    ‘‘‘
    mem = {}
    stat = {}
    f = open(‘/proc/meminfo‘)
    lines = f.readlines()
    for line in lines:
        if len(line) < 2 : continue
        name = line.split(‘:‘)[0]
        var  = line.split(‘:‘)[1].split()[0]
        mem[name] = long(var) * 1024.0
    stat[‘MemUsed‘] = mem[‘MemTotal‘] - mem[‘MemFree‘] - mem[‘Buffers‘] - mem[‘Cached‘]
    stat[‘MemTotal‘] = mem[‘MemTotal‘]
    stat[‘MemFree‘] = mem[‘MemFree‘]
    stat[‘Buffers‘] = mem[‘Buffers‘]
    stat[‘Cached‘] = mem[‘Cached‘]
    return stat

因为我下面使用的方法来获取的进程信息,只能知道该进程占内存的百分比。所以必须先获取内存的总量。

接下来定义一个获取进程信息的函数。

def proc_stat(procid):
    import commands
    ps_stat = None
    try:
        #获取进程的内存信息
        ps_stat = commands.getoutput(‘ps -fp %s -u‘ % procid).split(‘\n‘)[2].split()
    except:
        return {}

procInfo = {}

procInfo[‘PID‘] = procid

#这里调用了刚才定义的 memory_stat 获取内存总量,
    #然后乘以该进程所占内存的百分比,即为内存使用量
    procInfo[‘MemoryUsed‘] = memory_stat()[‘MemTotal‘] * float(ps_stat[3]) / 100

procInfo[‘Start‘] = ps_stat[8]
    procInfo[‘StartCommand‘] = ps_stat[10]

return procInfo

接着使用 ipython ,测试 ,先开一个 python 进程 ,假设进程ID为2168,则:

from MachineInfo import proc_stat

ps = proc_stat(2168)

ps

{‘MemoryUsed‘: 3650289.6639999999, #这里是以 byte 为单位,也可以自己进行转换
 ‘PID‘: 2168,
 ‘Start‘: ‘21:56‘,
 ‘StartCommand‘: ‘python‘}

记录完毕。Over~

时间: 2024-10-06 03:21:18

Python & Ubuntu 获取进程信息的相关文章

python进阶四(类的继承)【4-5 python中获取对象信息】

python中获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: 1 class Person(object): 2 def __init__(self, name, gender): 3 self.name = name 4 self.gender = gender 5 6 class Student(Person): 7 def __init__(self, name, gender, score

Python学习笔记15:标准库之获取进程信息(os包)

Python的os包中有查询和修改进程信息的函数. 进程信息 os包中相关函数如下: uname() 返回操作系统相关信息,类似于Linux上的uname命令. umask() 设置该进程创建文件时的权限mask,类似于Linux上的umask命令. get*() 查询 (*由以下代替) uid, euid, resuid, gid, egid, resgid :权限相关,其中resuid主要用来返回saved UID. pid, pgid, ppid, sid                

[Python Study Notes]进程信息(丁丁软件监控进程,http-post)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >>文件: 进程信息.py >>作者: liu yang >>邮箱: [email protected] ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

python 之获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> type(None) <type(None) 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判

通过python脚本获取服务器硬件信息

#!/usr/bin/python # coding:utf-8 """ 采集机器自身信息 1 主机名 2 内存 3 ip与mac地址 4 cpu信息 5 硬盘分区信息 6 制造商信息 7 出厂日期 8 系统版本 """ import socket import psutil import subprocess import time import platform import json import requests device_white

ubuntu 查看进程信息

查看进程信息 ps ps -aux 查看所有进程,每行一个程序 top 显示当前运行程序 kill 98 (98为PID号,) kill -9 98 (强制杀死98) ps -e Linux如何查看端口1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000# lsof -i:8000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMElwfs 22065 root 6u IPv4 439505

VC中遍历进程并获取进程信息

代码如下: /***************************************************/ /* 函数: 遍历进程信息 /* 参数:进程名称 例如: aaa.exe /* 返回: 无 /* 创建人: 日期 内容 /* 金胖胖 2015年2月26日 新建 /***************************************************/ void CUIConsoleDlg::GetAllProcessInfo(char* szExeFile)

Qt 扫描进程列表以及获取进程信息

使用方法: QMap<QString,qint64> app_pid; getAllAppPidList( app_pid ); #include <tlhelp32.h>// for CreateToolhelp32Snapshot #include <Psapi.h> // for GetModuleFileNameEx #define FORMAT_PATH(path) path.replace('\\','/').toLower() QString GetPat

通过python自动化获取服务器信息,并写入到excel

博主目前在电信外包工作,比较坑,因为涉及到统计服务器信息的工作,而且统计服务器的个数大概有几百台,统计之后还要将信息全部写入到excel里去,如果是手工一个个去做,起码做一个月吧,前提无法使用ansible等工作,只能通过CRT的方式,一个个手工登上去,然后看服务器上所有进程的信息,包括进程名称,进程端口号,启停方式,工作路径.一台服务器上可能有上万个程序,你一个个手工搞,并将信息录入到excel,一个服务器就能把你搞崩溃. 那面对这个问题,我思考了需要分两步走,其一,需要获取服务器的信息文件,