zoukankan      html  css  js  c++  java
  • python脚本监控获取当前Linux操作系统[内存]/[cpu]/[硬盘]/[登录用户]

    此脚本应用在linux, 前提是需要有python和python的psutil模块

    脚本

    #!/usr/bin/env python
    # coding=utf-8
    import sys
    import psutil
    import time
    import os
    time_str =  time.strftime( "%Y-%m-%d", time.localtime( ) )
    file_name = "./" + time_str + ".log"
    
    if os.path.exists ( file_name ) == False :
       os.mknod( file_name )
       handle = open ( file_name , "w" )
    else :
       handle = open ( file_name , "a" )
    
    if len( sys.argv ) == 1 :
       print_type = 1
    else :
       print_type = 2
    
    def isset ( list_arr , name ) :
        if name in list_arr :
           return True
        else :
           return False
    
    print_str = "";
    if ( print_type == 1 ) or isset( sys.argv,"mem" )  :
     memory_convent = 1024 * 1024
     mem = psutil.virtual_memory()
     print_str +=  " 内存状态如下:
    " 
     print_str = print_str + "   系统的内存容量为: "+str( mem.total/( memory_convent ) ) + " MB
    " 
     print_str = print_str + "   系统的内存以使用容量为: "+str( mem.used/( memory_convent ) ) + " MB
    " 
     print_str = print_str + "   系统可用的内存容量为: "+str( mem.total/( memory_convent ) - mem.used/( 1024*1024 )) + "MB
    "
     print_str = print_str + "   内存的buffer容量为: "+str( mem.buffers/( memory_convent ) ) + " MB
    " 
     print_str = print_str + "   内存的cache容量为:" +str( mem.cached/( memory_convent ) ) + " MB
    "
    
    if ( print_type == 1 ) or isset( sys.argv,"cpu" ) :
     print_str += " CPU状态如下:
    "
     cpu_status = psutil.cpu_times()
     print_str = print_str + "   user = " + str( cpu_status.user ) + "
    " 
     print_str = print_str + "   nice = " + str( cpu_status.nice ) + "
    "
     print_str = print_str + "   system = " + str( cpu_status.system ) + "
    "
     print_str = print_str + "   idle = " + str ( cpu_status.idle ) + "
    "
     print_str = print_str + "   iowait = " + str ( cpu_status.iowait ) + "
    "
     print_str = print_str + "   irq = " + str( cpu_status.irq ) + "
    "
     print_str = print_str + "   softirq = " + str ( cpu_status.softirq ) + "
    " 
     print_str = print_str + "   steal = " + str ( cpu_status.steal ) + "
    "
     print_str = print_str + "   guest = " + str ( cpu_status.guest ) + "
    "
    
    if ( print_type == 1 ) or isset ( sys.argv,"disk" ) :
     print_str +=  " 硬盘信息如下:
    " 
     disk_status = psutil.disk_partitions()
     for item in disk_status :
         print_str = print_str + "   "+ str( item ) + "
    "
    
    if ( print_type == 1 ) or isset ( sys.argv,"user" ) :
     print_str +=  " 登录用户信息如下:
     " 
     user_status = psutil.users()
     for item in  user_status :
         print_str = print_str + "   "+ str( item ) + "
    "
    
    print_str += "---------------------------------------------------------------
    "
    print ( print_str )
    handle.write( print_str )
    handle.close()
    

    此时如果直接启动的话会报错(因为没有psutil模块)

    下面安装psutil模块

    下载

    wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz
    

    解压

    tar -zxvf psutil-2.1.3.tar.gz
    

    安装

    cd psutil-2.1.3/
    
    python setup.py install
    

    安装过程中报错

    原因:缺少python-dev的依赖环境, 安装它

    yum -y install python-devel.x86_64
    

    再次安装psutil

    python setup.py install

    安装成功

    测试psutil模块是否安装成功

    [root@localhost psutil-2.1.3]# python
    
    >>> import psutil
    
    >>> psutil.pids()
    

    安装成功

    运行脚本

    ./system.py 
    

    显示

    [root@localhost test]# ./system.py 
     内存状态如下:
       系统的内存容量为: 1863 MB
       系统的内存以使用容量为: 445 MB
       系统可用的内存容量为: 1418MB
       内存的buffer容量为: 32 MB
       内存的cache容量为:247 MB
     CPU状态如下:
       user = 5.9
       nice = 0.0
       system = 8.34
       idle = 1125.86
       iowait = 2.2
       irq = 0.02
       softirq = 0.48
       steal = 0.0
       guest = 0.0
     硬盘信息如下:
       sdiskpart(device='/dev/mapper/VolGroup-lv_root', mountpoint='/', fstype='ext4', opts='rw')
       sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext4', opts='rw')
       sdiskpart(device='/dev/sr0', mountpoint='/mnt/redhat', fstype='iso9660', opts='ro')
     登录用户信息如下:
        suser(name='root', terminal='pts/0', host='192.168.145.1', started=1510234880.0)
    ---------------------------------------------------------------
    

    成功!

  • 相关阅读:
    MySQL中的MRR和BKA
    MySQL中的BNL优化器
    MySQL中索引
    MySQL中的两种排序方式: index和filesort
    设计模式之观察者模式
    设计模式之策略模式
    设计模式之模板方法
    java和JavaScript的区别
    HTML 简介--from app (W3)
    与代码同行-五年计划
  • 原文地址:https://www.cnblogs.com/chenglee/p/7809275.html
Copyright © 2011-2022 走看看