脚本内容如下:
vim ~/shell/clean_cache.py
1 #!/usr/bin/python
2 #conding=utf-8
3 #该脚本用于清理服务器当中占用内存20G以上,运行时间超过3小时以上(或1天以上的)进程。
4 importos5 #import psutil
6
7 pslist = os.popen('ps -auxf','r').readlines()8 for list inpslist:9 p = list.split() #以空格分割
10 user = p[0] #用户
11 pid = p[1] #进程PID
12 mem = p[4] #内存
13 day = p[8] #日期
14 t = p[9] #运行时间
15 if mem.isdigit() and int(mem) > 20000000: #剔除第一行vsz并且保证占用内存大于20G
16 if day.isalnum(): #判断日期是否为今天
17 printday.isalnum()18 print "progess running over a day,kill it now!"
19 cmd = "kill -9"+pid20 os.popen(cmd)21 if int(t.split(':')[0]) > 180: #判断运行时间超过3小时
22 print t.split(':')[0]23 print "this progesss have run over 2 hour,kill it now!"
24 cmd = "kill -9"+pid25 os.popen(cmd)26 else:27 continue
以上是单台的服务器的脚本内容,其实可以结合crontab或者可以与ansible的script模块来批量执行,会达到更好的效果!
举例: ansible all -m script -s -a "/home/xxx/shell/clean_cache.sh"