fdgsdf 发表于 2015-8-11 09:16:38

python 清理mail spool 下的小脚本

最近老是碰到磁盘爆满,一查之下是/var/spool/clientmqueue下面的文件太大了。这是由于计划任务未执行所造成的。目的是定期清理这个文件下面的,如果用shell 脚本是很好写的,基本上几行就能搞定。但是最近在玩python ,所以就想自己用Python写一个。   我自己写了一个脚本,drop_clientmqueue.py:#!/usr/bin/python
#-*-encoding:utf-8 -*-
import os,subprocess,re
p = subprocess.Popen('cd /var/spool/clientmqueue;du -sh *',shell=True,stdout=subprocess.PIPE)
out=p.communicate()
patten = re.compile('[\n\t]+')
str = re.sub(patten,',',out)
end = str.split(',')[:-1][::2]
local = str.split(',')[:-1]
print local
for i in local:
   # print i,i[-1]
    if i[-1] == 'G':
      if float(i) > 20:
            cmd = 'cd /var/spool/clientmqueue;ls | xargs rm -f'
            print cmd
            os.system(cmd)
仔细看一下这个脚本,其实没什么大的东西,原理就调用系统命令du -sh找到每个文件的大小,然后根据文件大小,进行删除。删除的时候调用的命令就是:cd /var/spool/clientmqueue;ls | xargs rm -f
还有一个脚本:clear_mail.py#!/usr/bin/python
#-*-encoding:utf-8 -*-
import os,subprocess,re
p = subprocess.Popen('du -sh *',shell=True,stdout=subprocess.PIPE)
out=p.communicate()
patten = re.compile('[\n\t]+')
str = re.sub(patten,',',out)
end = str.split(',')[:-1][::2]
local = str.split(',')[:-1]
#print local
#print end
for i in end:
#    print i,i[-1]
    if i[-1] == 'G':
#      print 'G==='
      print "size is ", i
      if float(i) > 2:
#            print end.index(i)
#            print local
            cmd = 'cat /dev/null>%s' %local
            print cmd
            os.system(cmd)

这个和上面的差不多,原理是一样的。
感觉Python写脚本对于初学者来说是很不好的,不知道从哪里下手。
还有简单的方法,就是调用: os.path.getsize() 然后调用os.walk() 遍历目录。直接得到绝对路径下面的文件大小,然后可以进行操作。 这个方法可以直接写成方法,然后就可以随地调用了。
页: [1]
查看完整版本: python 清理mail spool 下的小脚本