Ando cazando un proceso que anda tronando unos servers pero no se cual es, así que me encontré con esta “solucion” para logear el CPU, memoria y el proceso cada 5 segundos en un archivo ps.log (https://askubuntu.com/questions/22021/how-to-log-cpu-load)
//De mi cosecha lo convertí en un script y lo deje corriendo como proceso de la siguiente manera
//Con cualquier editor de terminal creamos un archivo
vi log_cpu_process.sh
//Copiamos el codigo para crear el log cada 5 segs
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
//Damos permisos de ejecucion
chmod +x log_cpu_process.sh
//y dejamos corriendo el script como un proceso en el background
nohup setsid ./log_cpu_process.sh &
Ya despues la idea es cuando detecte un pico en el CPU o que vuelva a tronar el server ya puedo usar algo como esto:
ps.log | grep <la hora> o el <cpu%>
Resultado
Funcionó bien, detecte un pico en el uso del CPU y me meti a ver que era, solo que eran procesamiento normal de apache nada fuera de lo común. Al parecer lo que causaba el problema era que estaba corriendo un server de mysql que no se usaba//con este comando pueden ver dentro del archivo donde -n es el numero de lineas donde buscar y en el grep el –a es el numero de lineas a mostrar despues de que encuentra el criterio de busqueda entre las comillas
tail -n 5000000 ps.log | grep '20 18:40:' --after-context=12
Para detener el proceso
Muy importante para evitar que dejemos el proceso corriendo toda al vida hay que matarlo pero si se les olvido guardar el PID en algun lado pueden encontrarlo de la siguiente manera
ps -ax | grep log_cpu_process
y ya con el PID basta con un $ kill -9 <PID> y listo.