Lister les process par ordre de consommation mémoire et CPU
Il arrive régulièrement de vouloir connaitre rapidement les process qui occupent le plus de mémoire ou de CPU. L'utilitaire "top" fonctionne très bien, mais il existe également via la commande "ps" deux petites astuces permettant d'arriver rapidement au même résultat.
Lister 10 process occupant le plus de mémoire
En lançant la commande:
ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head
Vous obtiendrez le TOP 10 des process utilisant le plus de mémoire.
Exemple:
[root@www ~]$ ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head 15.6 0.3 3979 /usr/sbin/mysqld 0.9 0.2 13091 /usr/sbin/apache2 -k start 0.9 0.2 13037 /usr/sbin/apache2 -k start 0.9 0.1 13181 /usr/sbin/apache2 -k start 0.9 0.1 13093 /usr/sbin/apache2 -k start 0.9 0.1 11336 /usr/sbin/apache2 -k start 0.8 0.2 14370 /usr/sbin/apache2 -k start 0.8 0.0 3963 /usr/sbin/named -u bind 0.5 0.0 18014 /usr/sbin/apache2 -k start 0.3 0.0 14373 /usr/sbin/apache2 -k start
Nous voyons le serveur MySQL qui occupe 15,6% de la mémoire.
Lister 10 process occupant le plus de CPU
De la même manière, nous pouvons afficher le TOP 10 des process utilisant le plus de CPU
ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head
Le résultat sera le suivant:
[root@www ~]$ ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head 0.9 0.4 14756 /usr/sbin/apache2 -k start 15.6 0.3 3979 /usr/sbin/mysqld 0.9 0.2 13181 /usr/sbin/apache2 -k start 0.9 0.2 13091 /usr/sbin/apache2 -k start 0.2 0.2 9230 /usr/bin/perl -w /usr/bin/sec -conf=/etc/sec/apache2-php-errors.conf -input=/var/log/apache2/*error.log -pid=/var/run/sec.pid -detach -syslog=daemon 0.9 0.1 13037 /usr/sbin/apache2 -k start 0.0 0.1 14657 bash 0.0 0.1 14499 -bash 0.8 0.0 3963 /usr/sbin/named -u bind 0.5 0.0 18014 /usr/sbin/apache2 -k start
Le résultat sera identique que précédement, mais avec un classement CPU, nous voyons que le process Apache dont le PID est 14756 occupe 0.4% du CPU.