ITPub博客

首页 > 应用开发 > Python > 运维开发DU命令,助力文件系统清理

运维开发DU命令,助力文件系统清理

原创 Python 作者:jaymarco 时间:2020-09-23 09:29:03 0 删除 编辑

  想想大多数系统运维工程师在维护他的业务系统过程中都会发现系统自带的工具或是命令都是无法满足他们的工作需求,反而大降低了工作效率。但系统工程师会想办法写一些批量处理脚本来改善目前工作处境。想办法让自身工作更加简便、更加自动化。谁说运维不懂开发,接下来我们有请老司机来介绍一下他的DU工具。


一、du介绍

指令 du 能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小。但是,du命令只支持unix/liunx,他是不支持windows的,本文就是教大家怎么样实现一个du的命令。

linux的du命令效果


        du命令,可以快速定位文件夹下文件总大小,对于经常要清理目录的人,有大用。


二、Windows下使用du命令

在以往的维护过程中,特别是清理日志时,我自己非常频繁使用这个命令,因为可以快速定位目录、文件的大小,是清理磁盘的利器。

如果我们维护了windows服务器的话,查看目录大小要一个一个的选中目录,然后右键,在查看目录大小的话,效率太低了。所以我们可以考虑自己做个命令工具,简单实现du命令,并对目录大小进行排序,就像这样,输入路径,及统计其下文件总打小: 如:



三、 用python实现流程分析

1、给用户输入path: 我们建立一个简单的启动函数start,专门用户给用户输入path def start():


2、根据path,找到目录文件,统计大小,并排序: 我们建立一个list函数,接受path后,找出目录、文件,并将目录名称、文件名称、大小数据放入字典,最后对字典排序,

def list(path):


3、统计文件大小:

def getSize(file):



接下来介绍一下使用python开发du用到的功能代码


1、Start-处理用户的输入代码:

#2、定义用户输入的函数,用户输入n/N,就停止这个程序,输入路径就调用list函数,统计目录及文件

def start():

    isNext=1

    while isNext==1:

        path = raw_input("enter path (d:\\\),stop enter n/N: ")

        if path=='n' or path=='N':

            isNext=0

        else:

            list(path)

#1、开始执行这个文件时,先从start作为main函数开始执行

if __name__=='__main__':

    start()

2、List-罗列pATH下的目录及文件代码:

#3、罗列path下有哪些目录及文件

def list(path):

   dirs={}#定义个存放目录的字典

   #罗列出path下所有的一级目录及文件

   for dp in os.listdir(path):

      #3.1、判断dp是否是目录

      if os.path.isdir(os.path.join(path,dp)):

         dir_size=0#临时存储目录大小

         #os.walk遍历目录,取得所有文件

         for root,dir,files in os.walk(os.path.join(path,dp)):

            for name in files:#每个目录下的文件清单

               try:

                        #累加文件夹下每个文件大小

                  dir_size +=getsize(os.path.join(root,name))

               except Exception, e:

                  pass

         dirs[dp]=dir_size#添加目录及大小


      #3.2、文件处理

      elif os.path.isfile(os.path.join(path,dp)):

         try:

                #计算文件大小,并加入到dir字典中

            dirs[dp]=getsize(os.path.join(path,dp))

         except Exception, e:

            pass

   #对目录或文件大小排序

   ds=sorted(dirs.iteritems(),key=lambda d:d[1],reverse=True)

   #输出目录大小

   for x in ds:

      d = x[0]

      size=x[1]

      size2=''

      if size>=1073741824:

         size2=str(size/1024/1024/1024)+' G'

      elif size>=106496 and size<=1073741824:

         size2=str(size/1024/1024)+' M'

      elif size<106496:

         size2=str(size/1024/1024)+' Byte'

      print '%-50s %50s'%(d,size2)

3、List-用到的os函数

使用下面函数前先导入os模块 Import os 1、List-罗列pATH下的目录及文件

os.listdir(path)

2、判断是否是目录 os.path.isdir()

3、判断是否文件 os.path.isfile()

4、遍历目录下所有文件 os.walk(path)

5、获取文件大小 os.path.getsize(file)


四、 运行du.py验证功能

1、windows下: 安装好python软件后就可以遍历统计出各个目录的的存储空间。 执行 python.exe du.py

2、linux下 直接执行du.py就可以 遍历出各文件系统空间,

有需要的朋友可以关注我的公众号,文章每日一更


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28833846/viewspace-2723369/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE、OBOCP和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    82
  • 访问量
    135664