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('\n')                                                 #因为列表每个元素都有个换行符,因此这里稍作处理。
    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,"\n")                                               #获取磁盘的详细信息
print(psutil.disk_usage('/'),psutil.disk_usage('/boot'),"\n")  #获取分区的使用情况
print(psutil.disk_io_counters(),"\n")                          #获取磁盘的总io个数,读写信息。

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

 

 2.2.4 网络模块

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

 可以看到,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(),'\n')
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() 返回系统登录时间

 

posted @ 2018-11-07 15:18  喜欢it的小聪聪  阅读(607)  评论(0编辑  收藏  举报