ver tengo saber revisar que procesos para memoria mas estado consumen como comando chequear linux project-management process

linux - tengo - ver procesos que consumen mas memoria aix



Elimina automáticamente el proceso que consume demasiada memoria o se bloquea en Linux (6)

Me gustaría un "sistema" que monitoree un proceso y mataría a dicho proceso si:

  • el proceso excede algunos requisitos de memoria
  • el proceso no responde a un mensaje del "sistema" en algún período de tiempo

¿Asumo que este "sistema" podría ser algo tan simple como un proceso de monitoreo? Un ejemplo de código de cómo se podría hacer esto sería útil. Por supuesto, no soy contrario a una solución completamente diferente a este problema.


Para limitar el uso de la memoria de los procesos, verifique /etc/security/limits.conf


¿Los procesos monitoreados son los que está escribiendo, o simplemente cualquier proceso?

Si se trata de procesos arbitrarios, puede ser difícil monitorear la capacidad de respuesta. A menos que el proceso ya esté configurado para manejar y responder a los eventos que puede enviar, entonces dudo que pueda supervisarlos. Si se trata de procesos que está escribiendo, deberá agregar algún tipo de gestión de mensajes con los que pueda usar el control.


Para el primer requisito, es posible que desee examinar ya sea utilizando ulimit o ajustando la configuración OOM-killer del kernel en su sistema.

Los daemons de monitoreo existen para este tipo de cosas también. Dios es un ejemplo reciente.


Si desea configurar un sistema de monitoreo bastante completo, consulte monit . Puede ser muy (MUY MUY MUY MUY) conversador a veces, pero hará un montón de monitoreo, reiniciará los servicios, lo alertará, etc.

Dicho eso, no te sorprendas si recibes docenas de correos electrónicos por día hasta que te acostumbres a configurarlo y le dices de qué no molestarte.


Escribí un script que se ejecuta como un trabajo cron y se puede personalizar para eliminar los procesos problemáticos:

#!/usr/local/bin/perl use strict; use warnings; use Proc::ProcessTable; my $table = Proc::ProcessTable->new; for my $process (@{$table->table}) { # skip root processes next if $process->uid == 0 or $process->gid == 0; # skip anything other than Passenger application processes #next unless $process->fname eq ''ruby'' and $process->cmndline =~ //bRails/b/; # skip any using less than 1 GiB next if $process->rss < 1_073_741_824; # document the slaughter (my $cmd = $process->cmndline) =~ s//s+/z//; print "Killing process: pid=", $process->pid, " uid=", $process->uid, " rss=", $process->rss, " fname=", $process->fname, " cmndline=", $cmd, "/n"; # try first to terminate process politely kill 15, $process->pid; # wait a little, then kill ruthlessly if it''s still around sleep 5; kill 9, $process->pid; }

http://blog.endpoint.com/2012/08/automatically-kill-process-using-too.html


Pruebe Process Resource Monitor para obtener un monitor de procesos clásico y fácil de usar. Código disponible bajo la GPL.

Hay algunas otras secuencias de comandos de monitoreo que también pueden resultarle interesantes.