← retour aux snippets

ps: classer par mémoire ou CPU

Lister les processus, trier par mémoire/CPU, afficher les colonnes utiles et agir proprement.

bash système #ps#process#cpu#memory

objectif

Identifier les processus qui consomment le plus de mémoire ou de CPU, sur Linux et macOS, et agir sans risque (arrêt propre, inspection).

code minimal

# top 15 par mémoire (portable Linux/macOS)
ps -Ao pid,ppid,comm,%mem,%cpu | sort -k4,4nr | head -n 15

utilisation

# top 15 par CPU
ps -Ao pid,ppid,comm,%mem,%cpu | sort -k5,5nr | head -n 15

# afficher la commande complète
ps -Ao pid,ppid,command,%mem,%cpu | sort -k4,4nr | head -n 15

# ne montrer que votre utilisateur
ps -U "$USER" -o pid,ppid,comm,%mem,%cpu --sort=-%mem 2>/dev/null \
  || ps -Ao pid,ppid,comm,%mem,%cpu | awk -v u="$USER" 'NR==1 || $0 ~ u' | sort -k4,4nr

# trouver un processus précis (regex sur le nom de commande)
ps -Ao pid,ppid,comm,%mem,%cpu | awk '$3 ~ /postgres/'

# arrêter proprement le plus gros consommateur mémoire (SIGTERM)
pid="$(ps -Ao pid,%mem --sort=-%mem | awk 'NR==2{print $1}')"
[ -n "$pid" ] && kill -TERM "$pid"

# vérifier qu'il n'existe plus
ps -p "$pid" >/dev/null || echo "processus $pid arrêté"

variante(s) utile(s)

# Linux: tri natif sans sort externe
ps -e -o pid,ppid,comm,%mem,%cpu --sort=-%mem | head -n 15
ps -e -o pid,ppid,comm,%mem,%cpu --sort=-%cpu | head -n 15

# macOS: fallback via sort (ps BSD sans --sort)
ps -Ao pid,ppid,comm,%mem,%cpu | sort -k4,4nr | head -n 15
ps -Ao pid,ppid,comm,%mem,%cpu | sort -k5,5nr | head -n 15

# afficher la RSS en Mo (mémoire résidente)
ps -Ao pid,ppid,comm,rss= | awk 'NR==1{print "PID PPID COMM RSS(MiB)"; next} {printf "%s %s %s %.1f\n",$1,$2,$3,$4/1024}' | sort -k4,4nr | head

# regrouper par commande (compter les instances)
ps -Ao comm= | sort | uniq -c | sort -nr | head -n 20

# isoler les zombies
ps -Ao pid,ppid,stat,comm | awk '$3 ~ /Z/'

# inspecter un PID (fichiers ouverts, ports)
pid=1234
lsof -p "$pid" | head
lsof -i -P -n | awk -v p="$pid" '$2==p'

notes

  • sur Linux, --sort=-%mem et --sort=-%cpu simplifient le tri; sur macOS, utilisez sort -k.
  • privilégiez un arrêt avec kill -TERM puis vérifiez l’extinction; évitez -KILL sauf en dernier recours.
  • comm peut tronquer; utilisez command pour la ligne complète quand nécessaire.
  • la RSS (resident set size) reflète la mémoire réellement utilisée; %mem est un pourcentage de la RAM totale.