zoukankan      html  css  js  c++  java
  • python----linux系统管理

    1.调用系统命令

    1.1 os.system

    system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。

    例一:

    import  os
    
    cmd = "ps -ef | grep 80"
    a = os.system(cmd)
    print(a)

    >  0         #上程序把命令的运行结果返回给a,0代表执行成功。

     例二:

    import  os
    
    cmd = "lsof -i:81"
    a = os.system(cmd)
    print(a)

     

    >  256         #上程序把命令的运行结果返回给a,256代表返回空值。

    例三:

    import  os
    
    cmd = "abc"
    a = os.system(cmd)
    print(a)

    >  32512         #上程序把命令的运行结果返回给a,32512代表命令执行错误。

    1.2 os.popen

    该方法将命令的返回结果以一个类似文件的格式传递出来。

    例:

    import  os
    cmd = "ls /scripts/test | grep 2 | awk '{print i$0}' i='/scripts/test/'"    #将文件名ls出来,并通过awk拼接出文件的全路径。
    delete_file = os.popen(cmd)                                                 #将ls命令的结果以类似文件的形式传递给delete_file
    for file in delete_file.readlines():                                        #delete_file的内容变成列表,再将列表的元素逐个传递给file。
        file = file.strip('
    ')                                                 #因为列表每个元素都有个换行符,因此这里稍作处理。
        os.remove(file)                                                         #根据文件的全路径删除文件。
        print(file+" is deleted!!!")                                            #打印删除文件的信息。

    ps:

    read() 显示文件的全部内容

    readline() 逐行显示文件的内容

    readlines() 逐行将文件的内容变成列表

    1.3 常用的os命令

    os.remove():删除文件

    os.rename():重命名文件

    os.walk():生成目录树下的所有文件名

    os.chdir():改变目录

    os.mkdir/makedirs:创建目录/多层目录

    os.rmdir/removedirs:删除目录/多层目录

    os.listdir():列出指定目录的文件

    os.getcwd():取得当前工作目录

    os.chmod():改变目录权限

    os.path.basename():去掉目录路径,返回文件名

    os.path.dirname():去掉文件名,返回目录路径

    os.path.join():将分离的各部分组合成一个路径名

    os.path.getsize():返回文件大小

    os.path.exists():是否存在

    os.path.isabs():是否为绝对路径

    os.path.isdir():是否为目录

    os.path.isfile():是否为文件

    2. 读取系统状态

    2.1 psutil

    2.1.1 cpu模块

    import  psutil
    cpu = psutil.cpu_times()
    print(cpu)
    print("user: " + str(cpu[0]))
    print("nice: " + str(cpu[1]))
    print("system: " + str(cpu[2]))
    psutil.cpu_times()可以把cpu的所有信息都显示出来。返回的信息是以一种类似于字典的模式显示出来的。因此当我们取cpu[0]的值得时候。他只会显示8.55这一个数值,如果想显示的比较完整,则需要自己编辑一下,把user也加上去。

    2.2.2 内存模块

    import  psutil
    memory = psutil.virtual_memory()
    print(memory)
    print(str(memory.total/1024/1024) + ' Mb') #显示总内存 print(str(memory.used/1024/1024) + ' Mb') #显示已使用内存 print(str(memory.free/1024/1024) + ' Mb') #显示空闲内存

    memory = psutil.virtual_memory()也会把一个类似于字典的数据传达给变量,其用法与cpu模块详细。其中可以对其使用.total,.used,.free等方法获取指定的内存参数。

     

     2.2.3 磁盘模块

    import  psutil
    disk = psutil.disk_partitions()
    print(disk,"
    ")                                               #获取磁盘的详细信息
    print(psutil.disk_usage('/'),psutil.disk_usage('/boot'),"
    ")  #获取分区的使用情况
    print(psutil.disk_io_counters(),"
    ")                          #获取磁盘的总io个数,读写信息。

    psutil.disk_partitions()可以获取磁盘信息,与其他模块不同的是,这里的信息最外层是以列表的形式显示的,然后列表中的元素就是与其他模块一样是一种类似字典的数据,其中每个元素代表一个分区。

     2.2.4 网络模块

    import  psutil
    network = psutil.net_io_counters()
    network_all = psutil.net_io_counters(pernic=True)
    print(network,'
    ')
    print(network_all,'
    ')
    for k,v in network_all.items():
        print(str(k) + ':' + str(v),'
    ')

     可以看到,psutil.net_io_counters()可以获取机器现在网络的总信息,psutil.net_io_counters(pernic=True)可以获取每个接口的信息,而这个信息则完全以字典的形式展示出来。

    2.2.5 进程模块

    import  psutil,datetime
    pids = psutil.pids()            #获取当前系统所有的进程号
    for pid in pids:
        process = psutil.Process(pid)   #把进程号传输给Process,获得一个进程实例
        #print(process.name())      #进程的名字
        #print(process.cwd())       #进程工作目录的绝对路径
        #print(process.exe())       #进程bin目录的路径
        #print(process.status())    #进程的状态
        #print(datetime.datetime.fromtimestamp(process.create_time()).strftime("%Y-%m-%d %H:%M:%S")) #进程启动时>间
        #print(process.uids())      #进程的uid
        #print(process.gids())      #进程的gid
        #print(process.cpu_times()) #进程的cpu时间
        #print(process.cpu_affinity())    #进程的cpu亲和度
        #print(process.memory_percent())  #进程的内存使用情况
        #print(process.io_counters())     #进程的io使用情况

    进程模块要注意的地方就是,需要先获取进程的进程号,然后将进程后传输给Process()这个方法,得到一个进程实例后,才能对其进行操作。

    2.2.6 其他

    import  psutil
    import  datetime
    print(psutil.users(),'
    ')
    boot_time1 = psutil.boot_time()
    boot_time2 = datetime.datetime.fromtimestamp(boot_time1).strftime("%Y-%m-%d %H:%M:%S")
    print(boot_time2)

    psutil.users() 返回当前登录用户的信息

    psutil.boot_time() 返回系统登录时间

  • 相关阅读:
    pylint
    Cygwin安装与配置
    Spring的配置文件
    网络传输测试软件
    MINA快速传输文件
    Jar包下载
    shutdown彻底关闭tomcat,以及多线程关闭
    Git使用
    例说数学学习中的四基
    求等差数列前n项和S_n的最值
  • 原文地址:https://www.cnblogs.com/QicongLiang/p/9848161.html
Copyright © 2011-2022 走看看