Récupérer L'utilisation CPU et l'utilisation de la mémoire d'un seul processus sur Linux?
je veux obtenir le CPU et l'utilisation de mémoire d'un seul processus sur Linux - je connais le PID. Avec un peu de chance, je peux l'obtenir à chaque seconde et l'écrire à un CSV en utilisant la commande "watch". Quelle commande puis-je utiliser pour obtenir ces informations depuis la ligne de commande Linux?
15 réponses
ps -p <pid> -o %cpu,%mem,cmd
(vous pouvez laisser" cmd " mais cela pourrait être utile pour le débogage).
notez que cela donne L'utilisation CPU moyenne du processus au cours de la période où il a été exécuté.
une variante de réponse de caf :
top -p <pid>
cette auto-rafraîchit l'utilisation du CPU afin qu'il soit bon pour la surveillance.
vous pouvez obtenir les résultats par le nom du processus en utilisant
ps -C chrome -o %cpu,%mem,cmd
l'option -C
vous permet d'utiliser le nom du processus sans savoir que c'est pid.
Utilisation pidstat (à partir de sysstat - Consulter le Lien ).
p.ex. pour surveiller ces deux codes de procédé (12345 et 11223) toutes les 5 secondes, utiliser
$ pidstat -h -r -u -v -p 12345,11223 5
lancer un programme et le surveiller
ce formulaire est utile si vous voulez référencer facilement un exécutable:
topp() (
$* &>/dev/null &
pid="$!"
trap ':' INT
echo 'CPU MEM'
while sleep 1; do ps --no-headers -o '%cpu,%mem' -p "$pid"; done
kill "$pid"
)
topp ./myprog arg1 arg2
maintenant quand vous appuyez sur Ctrl + C il sort du programme et cesse la surveillance. Sortie de l'échantillon:
CPU MEM
20.0 1.3
35.0 1.3
40.0 1.3
testé sur Ubuntu 16.04.
vous pouvez utiliser top -b
et récupérer le pid que vous voulez (avec le haut du drapeau -b
fonctionne en mode batch), ou aussi utiliser le drapeau -p
et spécifier le pid sans utiliser le grep.
ps aux | awk '{print "\t"}' | sort | uniq -c | awk '{print " "" "}' | sort -nr
ou par procédé
ps aux | awk '{print "\t"}' | sort | uniq -c | awk '{print " "" "}' | sort -nr |grep mysql
comme commenté dans réponse de caf ci-dessus, ps et dans certains cas pidstat vous donnera la moyenne à vie du pCPU. Pour obtenir des résultats plus précis top. Si vous devez organiser une fois que vous pouvez exécuter:
top -b -n 1 -p <PID>
ou pour les données relatives au procédé seulement et en-tête:
top -b -n 1 -p <PID> | tail -3 | head -2
sans en-têtes:
top -b -n 1 -p <PID> | tail -2 | head -1
ps aux|awk '{print ,,}'|grep PID
où la première colonne est le PID,la deuxième colonne L'utilisation CPU ,la troisième colonne l'utilisation de la mémoire.
pour obtenir l'utilisation de mémoire de juste votre application (par opposition aux bibliothèques partagées qu'il utilise, Vous devez utiliser L'interface Linux smaps). Cette réponse explique bien .
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep
PID-Process ID
etime - Processus en cours d'Exécution/Live "Durée de l'151920920"
%utilisation cpu - CPU
%mem - utilisation de la Mémoire
cmd - Commande
remplacez processname par n'importe quel processus que vous voulez suivre, mysql nginx php-fpm etc...
toutes les réponses ici montrent seulement le pourcentage de mémoire pour le PID.
voici un exemple d'utilisation de la mémoire rss en KB pour tous les processus apache, remplacez "grep apache" par "grep PID" si vous voulez simplement regarder un PID spécifique:
watch -n5 "ps aux -y | grep apache | awk '{print $2,$6}'"
Cette affiche:
Every 5.0s: ps aux -y | grep apache | awk '{print ,}'
Thu Jan 25 15:44:13 2018
12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360
Avec % CPU:
watch -n5 "ps aux -y | grep apache | awk '{print $2,$3,$6}'"
sortie:
Every 5.0s: ps aux -y | grep apache | awk '{print ,,}'
Thu Jan 25 15:46:00 2018
12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360
(si vous êtes dans MacOS 10.10, essayez l'option accumulative-c de top:
top -c a -pid PID
(cette option n'est pas disponible sous d'autres linux, essayé avec Scientific Linux el6 et RHEL6)
ci-dessus énumérer le processus de consommation de cpu et de mémoire
ps axo %cpu,%mem,command | sort -nr | head
CPU et l'utilisation de la mémoire d'un seul processus sur Linux ou vous pouvez obtenir le Top 10 cpu utilisé des processus en utilisant la commande ci-dessous
ps-aux -- sort-pcpu | head-n 11