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=-%memet--sort=-%cpusimplifient le tri; sur macOS, utilisezsort -k. - privilégiez un arrêt avec
kill -TERMpuis vérifiez l’extinction; évitez-KILLsauf en dernier recours. commpeut tronquer; utilisezcommandpour la ligne complète quand nécessaire.- la RSS (resident set size) reflète la mémoire réellement utilisée;
%memest un pourcentage de la RAM totale.