Categorías

Entradas recientes

Comentarios recientes


Main | Chroot con VsFtp »

Como Borrar Procesos Defunt (deleted) con script utlizando lsof+awk

By claudio | Julio 29, 2008

Por fin mi primer artículo. Bueno, debido que muchos sistemas de bases de datos hacen correr procesos en forma temporal, como un reports(oracle), estos pueden quedar existiendo pese que para el fin por el cual fueron creados ya no exista. Como consecuencia “secuestran” recursos del sistema como CPU, RAM y muchas veces disco, lo he visto en bases de datos oracle. Ahora, para ver estos procesos podemos correr la siguiente linea:

#lsof | grep deleted

Con esto nos aparecerán los procesos sin utilizar por la apliacción original(en mi caso oracle) pero que siguen existiendo a nivel de Sistema Operativo. Para automatizar el borrado de estos podemos crear un script como el que sigue:

#!/bin/sh
LOGFILE=mata-defun-log.`date +%y-%m-%d`    #creamos variable archivo log
lsof | grep deleted | awk ‘{print $2}’ > $LOGFILE  #almacenamos los PID en archivo
for i in `lsof | grep deleted | awk ‘{print $2}’`       #iteracion para procesos defunt
do
kill -9 $i                                                            # matamos procesos en el for
done

Con esto matamos de una vez todos estos procesos que molestan (deleted o defunt). Si queremos automatizar la operación acada cierto tiempo podemos utilzar cron:

#cron -e
00 */3 * * * root /home/user/mata_defunt.sh

Esto ejecutará cada 3 horas este script almacenado en /home/user/mata_defunt.sh

Se reciben comentarios. SLDS Claudio Hormazábal.

Topics: Artículos |

Comments

You must be logged in to post a comment.