Skip to content

Instantly share code, notes, and snippets.

@rondinelisaad
Created May 13, 2016 19:57
Show Gist options
  • Save rondinelisaad/f38fb78726a8ba8d403606c4a65fa706 to your computer and use it in GitHub Desktop.
Save rondinelisaad/f38fb78726a8ba8d403606c4a65fa706 to your computer and use it in GitHub Desktop.
#!/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