Commandes top et ps (infos processus, CPU, mémoire, etc.)

GNU/Linux  
HP-UX
SUN
UNIX 03, etc.
Windows

GNU/Linux

Commande top

Affiche un ps dynamique, ainsi que des infos système (utilisation CPU, Mem (RAM), swap).
Raccourcis : q pour sortir, h pour help/raccourcis

Autres : htop, atop

Commande ps

Autres infos

Options & infos (infos extraites du "man ps")

3 types d'options :

Infos sur les noms de colonne

Colonne "STAT" ou "S" (état du processus)

For BSD formats and when the stat keyword is used, additional characters may be displayed:

Vue hiérarchique

Quelques ps utiles

ps -elf | sed -n '1p; /seamonk[.]*ey/p;'   (affiche la 1ère lg et les infos du process recherché (ici : seamonkey))
ps aux | egrep 'TTY|mysql'   (affiche la 1ère lg et les infos du process recherché (ici : mysql))
COLUMNS=200  ps auxww
COLUMNS=200  ps alxww   (affiche aussi les priorités PRI et NI)
COLUMNS=200  ps -eLf   (affiche aussi les variables d'environnement, le LWP (thread ID), le NLWP (nombre de threads))

Exemple de ps, dans le script-shell "supportconfig" de SuSE

ps axwwo user,pid,ppid,%cpu,%mem,vsz,rss,stat,time,cmd

Suivre les processus ssh
while : ; do ps aux | grep ssh  ; done

Suivre un processus toutes les 3 secondes (et surlignage des différences par rapport au dernier état)
watch -n 3 -d ps lSm -p pid_du_processus

Voir
chronologiquement les processus démarrés
 ps kstart_time -ef

Voir les états des processus
ps axms

Classer par utilisation mémoire
ps axl --sort:rss

Classer par utilisation CPU
ps axl --sort:pcpu

N'afficher que les processus ldap
ps aux | grep ldap | grep -v grep
ps aux | egrep 'PID|ldap'

ps aux | grep [l]dap

Lister la ligne de commande complète, avec tous ses arguments

Notes
ps axo pid,cmd --cols 6000
ps aul --cols 6000
ps aux --cols 500
ps auxw
ps auxww
ps ael

Voir les process java et la ligne entiere de commande :
ps -C java -o pid -o ppid -o cmd --cols 500

Autre solution
COLUMNS=500  ps -C plugin-container -o pid -o ppid -o cmd

Charge CPU

Note : si charge CPU proche de 100% et pas de trace dans ps => une solution

Pour des infos sur les processeurs (cores) - lister les process et classer par temps d'utilisation cpu
ps -eo pid,user,args,pcpu,psr --sort pcpu
ps axmo user,pid,tid,tt,psr,pcpu,stat,tmout,f,wchan:12,comm

Lister les process et classer par temps d'utilisation cpu :
ps ax -o vsize,rss,%mem,%cpu,cputime,args --sort:%cpu             (--sort:cputime pas ok)
ps axl --sort:%cpu

Lister les process et classer par charge cpu :
ps -eo pid,user,args,pcpu --sort pcpu

Lister les process java et la charge cpu :
ps -C java -o pid -o ppid -o pcpu -o cmd --cols 500 --sort pcpu

Lister les process contenant le string j2sdk  et la charge cpu :
ps -A -o pid -o ppid -o pcpu -o cmd --cols 500 | grep j2sdk

Lister les process contenant le string j2sdk et classer par charge cpu :
ps -A -o pid -o ppid -o pcpu -o cmd --cols 500 --sort pcpu | grep j2sdk

Autres exemples :
UNIX95=yes ; ps -C java -o pid -o ppid -o pcpu -o cmd --cols 500 --sort pcpu
UNIX95=1 ps -ef -o pcpu,etime,stime,time,user,pid,comm | grep -E "PID|le_processus"
UNIX95=1 ps -aefxo pcpu,etime,stime,time,user,pid,comm | egrep "PID|le_processus"
UNIX95=yes ps -aefxo pid,ppid,user,stime,etime,time,pcpu,cpu,flags,state,sz,vsz,wchan,args |grep [j]ava

Mémoire

Notes
ps axl --sort:rss
ps ax -o vsize,rss,%mem,%cpu,args --sort:rss

ps -eo pid,user,args,pcpu,pmem,sz,vsz,rss
ps ax -o 'size:6,vsize:8,rss:8,pmem:6,pid:6,command'

Classés par max de VSZ, et affichage des 5 plus gros consommateurs en VSZ
ps ax -o 'vsize:6,size:8,rss:8,pmem,pcpu,pid,command' k-vsz,-rss | head -n6
ps ax -o 'vsize:6,size:8,rss:8,pmem,pcpu,pid,command' --sort=-vsz,-rss | head -n6
(l'option "--sort" est obsolete et remplacée par l'option 'k')

Classés par max de VSZ, et affichage des 5 plus gros consommateurs
ps ax -o 'pid:6,size:6,vsize:8,rss:8,pmem:6,command' k-vsz,-rss, | head -n6
ps -e -o 'rss vsz ruser cpu time pid args' | sort -n
ps -e -o 'vsz rss ruser cpu time pid args' | sort -n

Swap

Swap out = écriture sur disque.
ps -o m_swap,comm -e   (
Les valeurs concernant la swap utilisée peuvent être inexistantes)
top, puis f, et p (pour ajouter la colonne SWAP) (
Les valeurs concernant la swap utilisée peuvent être fausses)
grep VmSwap /proc/*/status

Processus fils et 100% de charge cpu

La commande ps n'affiche pas le temps d'utilisation CPU des processus fils, sauf si on utilise l'option S de ps.
ps alxSm --cols 180
ps alxSm | egrep 'TTY|mysql'   (pour voir les charges CPU des threads MySQL)
ps alxSm | sort -nk 12                (pour classer par temps cumulé (colonne TIME))
ps alxSe --cols 180

TIME   : Nombre de secondes CPU consommées par un processus depuis le STIME.
STIME : Moment où ce processus a démarré.

Priorité des process

ps alxww   (affiche : NI, PRI)
ps elf        (affiche : NI, PRI)
ps -Leo pid,tid,thcount,class,ni,pri,rtprio,psr,pcpu,stat,wchan:14,cmd     (affiche : NI, PRI, RTPRIO)

Threads

Options ps permettant d'afficher des infos sur les threads : -m, m, -L, -T, H (plus d'infos par : $ man ps)

Notes
ps -eLf
   affiche aussi les variables d'env., le LWP (thread ID), et le NLWP (nombre de threads)
ps -eLf S | egrep 'TTY|mysql'
   S (qui ne doit pas être collé aux autres options) affiche la colonne STAT
ps axmo user,pid,tid,tt,pcpu,stat,tmout,f,wchan:12,comm
ps axmo user,pid,tid,tt,psr,pcpu,stat,tmout,f,wchan:12,comm
ps -Leo pid,tid,thcount,class,ni,pri,rtprio,psr,pcpu,stat,wchan:14,cmd     (priorités : NI, PRI, RTPRIO)

wchan

WCHAN : nom de la fonction noyau dans laquelle le processus est en attente (sleeping), ps -eo pid,wchan=WIDE-WCHAN-COLUMN -o comm
ps -eo pid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan

HP-UX

HP-UX 11i v3 est compatible avec UNIX 95 v1 et v2, et avec UNIX 03 (s.e.de type Unix et compatibilité)

Liste longue

ps -ael | grep -E "TTY|leprocessus

Voir l'état des process suivants

ps -aef | egrep  -i 'PID|dce|secd|cdsd|cdsadv'

Lister la ligne de commande complète, avec tous ses arguments

L'option "x" fonctionne à partir de HP-UX 11i et permet de voir la ligne entière (il peut être nécessaire de positionner les variables COLUMN et UNIX95) ; avant HP-UX 11i il existait un patch pour l'option "x", sinon utiliser lsof.
export COLUMNS=200
export UNIX95=1
ps -efx

Top

UNIX95=1 ps -AHflx

Les 12 + gros consommateurs de CPU

UNIX95=1 ps -ef -o pcpu,user,pid,args | /bin/sort -u -r | sed -e 's/\.[0-9][0-9]/&\ %CPU/g' | sed -n 1,12p
(exemple inspiré de cette URL)

Threads

ps -aef | grep leprocessus | awk '{print $2}'| xargs /usr/ccs/bin/pstack
La commande pstack liste les threads (lwpids)

Vue hierarchique (utilisation d'options XPG4)

export UNIX95=yes
ps -Hefl
ps -H -e -opid,args
ps -Haefl   (a et e sont redondants)
Ou :
  1. UNIX95=1 ps -eafj | egrep "SID|leprocess"    (SID= process session ID)
  2. UNIX95=1 ps -fj -s leSID -H   (-s ou -g, -H ou --forest)

Voir uniquement les programmes java

ps -ael |grep SZ ; ps -ael | grep java
ps -efx |grep java
ps -fl -C java

export UNIX95=yes
ps -fC java
ps -fC java -o args
ps -Haefxo pid,ppid,user,stime,etime,time,pcpu,cpu,flags,state,sz,vsz,wchan,args |grep [j]ava
ps -C java -o pid -o ppid -o flags -o pcpu -o comm

AIX

ps -fT le PID

SUN

Lister la ligne de commande complète : /usr/ucb/ps -auxwww
Vue hiérarchique : ptree lePID

Notes

Windows

pslist, un outil de Sysinternals

pslist -x
pslist -x java
pslist -m java   (charge mémoire)
pslist -d java_pid


Vic
Page modifiée le 25 janvier 2023
Page d'accueil du site