Created
May 13, 2016 19:57
-
-
Save rondinelisaad/f38fb78726a8ba8d403606c4a65fa706 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
#coding: utf-8 | |
from StringIO import StringIO | |
import subprocess | |
from utils import (send_mail, FROM, TO) | |
def list_ipcs(): | |
""" | |
Executa comando em shell trazendo resultado a quantidade de semáforos \ | |
existentes. E o resultado é transformado em uma lista. | |
""" | |
ipcs_cmd = "sudo ipcs -s | awk '/apache/ {print $2}'" | |
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, | |
stdout=subprocess.PIPE, shell=True) | |
output, err = p.communicate() | |
ipcs_pids = [] | |
for line in StringIO(output): | |
ipcs_pids.append(line.strip()) | |
def kill_ipcs(arg1): | |
""" | |
Cria uma variavel com a execução do comando em shell que limpa a \ | |
tabela de semáforos. | |
:arg1: corresponde ao número do pid encontrado. | |
""" | |
ipcrm_cmd = "sudo ipcrm -s %s" % arg1 | |
p = subprocess.call(ipcrm_cmd, shell=True) | |
if __name__ == '__main__': | |
""" | |
Na condição de existir mais de 200 semáforos alocados, os mesmos \ | |
serão removidos e em seguida será enviado um email informando. | |
""" | |
CONTENT = '' | |
#import pdb; pdb.set_trace() | |
proc_ipcs = list_ipcs() | |
if len(proc_ipcs) >= 200: | |
for i in proc_ipcs: | |
kill_ipcs(i) | |
CONTENT += 'Havia OverFlow de semáforos. Feito a limpeza!' | |
else: | |
CONTENT += "Nao havia anormalidade na quantidade de semaforos!" | |
send_mail(CONTENT) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment