J'aimerais surveiller l'utilisation de la mémoire / du processeur d'un processus en temps réel. Similaire à top
un seul processus, mais de préférence avec un graphique d’historique.
shell
process
monitoring
top
Josh K
la source
la source
Réponses:
Sous Linux, il est
top
actuellement possible de se concentrer sur un seul processus, bien qu’il n’ait naturellement pas de graphique d’historique:Ceci est également disponible sur Mac OS X avec une syntaxe différente:
la source
top -p `pgrep -f /usr/bin/kvm`
.hostname
_pid.txt; exit'andhtop
est un excellent remplacement pourtop
. Il a ... des couleurs! Raccourcis clavier simples! Faites défiler la liste en utilisant les touches fléchées! Tuez un processus sans quitter et sans prendre en compte le PID! Marquez plusieurs processus et tuez-les tous!Parmi toutes les fonctionnalités, la page de manuel indique que vous pouvez appuyer sur Fpour suivre un processus.
Vraiment, vous devriez essayer
htop
. Je n'ai jamaistop
recommencé, après la première fois que j'ai utiliséhtop
.Afficher un seul processus:
htop -p PID
la source
top
a aussi des couleurs. Appuyez surz
.top
a des couleurs! Dommage que ses couleurs soient totalement inutiles, surtout si on les compare àhtop
(ce qui atténue les processus des autres utilisateurs et met en évidence le nom de base du programme).htop -p PID
cela fonctionnera aussi, à l'instar de l'exemple donné par @Michael Mrozek.psrecord
Les adresses suivantes graphique de l' histoire de quelque sorte . Le
psrecord
paquet Python fait exactement cela.Pour un processus unique, il s’agit de ce qui suit (arrêté par Ctrl+C):
Pour plusieurs processus, le script suivant est utile pour synchroniser les graphiques:
Les graphiques ressemblent à:
memory_profiler
Le paquet fournit un échantillonnage uniquement RSS (plus quelques options spécifiques à Python). Il peut également enregistrer un processus avec ses processus enfants (voir
mprof --help
).Par défaut, un
python-tk
explorateur de graphique basé sur Tkinter (qui peut être nécessaire) peut être exporté:pile de graphite & statsd
Cela peut sembler excessif pour un simple test ponctuel, mais pour quelque chose comme un débogage sur plusieurs jours, c'est à coup sûr raisonnable. Un tout-en-un pratique
raintank/graphite-stack
(des auteurs de Grafana)psutil
et unstatsd
client.procmon.py
fournit une implémentation.Ensuite, dans un autre terminal, après le démarrage du processus cible:
Ensuite, en ouvrant Grafana à l' adresse http: // localhost: 8080 , authentification en tant que
admin:admin
, configuration de la source de données https: // localhost , vous pouvez tracer un graphique tel que:pile de graphite & telegraf
Au lieu d’un script Python, l’envoi des métriques à Statsd
telegraf
(et duprocstat
plugin d’entrée) peut être utilisé pour envoyer les métriques directement à Graphite.La
telegraf
configuration minimale ressemble à ceci:Puis lancez la ligne
telegraf --config minconf.conf
. La partie Grafana est la même, à l'exception des noms de métriques.sysdig
sysdig
(disponible dans Debian et prises en pension pour Ubuntu) avec sysdig inspecter l' interface utilisateur semble très prometteur, fournissant des détails à grain très fin avec l' utilisation du processeur et RSS, mais malheureusement , l'interface utilisateur est incapable de les rendre, etsysdig
ne peut pas filtrerprocinfo
l' événement par le processus au moment de l'écriture. Cela devrait être possible avec un burin personnalisé (unesysdig
extension écrite en Lua).la source
pgrep --help
à la rescousse. Il y a au moins--newest
et--oldest
.Ctrl+C
le processus psrecord se ferme sans enregistrer de tracé, vous devez mettre fin au processus en cours de test.Pour utiliser ces informations sur un script, procédez comme suit:
calcPercCpu.sh
utiliser comme:
calcPercCpu.sh 1234
où 1234 est le pidPour le $ nPid spécifié, il mesurera la moyenne de 10 instantanés de l'utilisation du processeur en 1 seconde (délai de 0,1 s chacun * nTimes = 10); cela fournit un résultat précis et rapide de ce qui se passe au moment même.
Ajustez les variables à vos besoins.
la source
$nPercCpu
): shell, top, grep, sed, cut ... bc. Vous pouvez par exemple fusionner beaucoup de ces textes, sinon tous, dans un script Sed ou Awk.top
la sortie est une moyenne sur$delay
. Cf. Comment calculer l'utilisation du processeurJ'utilise normalement les deux suivants:
Calibre HP : c'est un très bon outil pour surveiller les processus, vous pouvez également consulter le graphe des appels et d'autres informations de bas niveau. Mais s'il vous plaît noter que c'est gratuit uniquement pour un usage personnel.
daemontools : un ensemble d'outils de gestion des services UNIX
la source
Utiliser
top
etawk
on pourrait facilement créer, par exemple, un journal d'utilisation% CPU ($9
) +% MEM ($10
), séparé par des virgules , qui pourra ensuite être introduit dans n'importe quel outil de statistiques et de graphique.La sortie sera comme
Cela ne donnera pas de bons résultats pour les gros
$delay
, cependant, car l'horodatage imprimé est en$delay
retard à cause du fonctionnement detop
la sortie. Sans trop entrer dans les détails, une solution simple consiste à enregistrer l’heure fournie partop
:Ensuite, l'horodatage est précis, mais la sortie sera toujours retardée
$delay
.la source
Si vous connaissez le nom du processus, vous pouvez utiliser
la source
Si vous disposez d'une distribution Linux réduite dans laquelle top ne dispose pas d'option par processus (-p) ou d'options connexes, vous pouvez analyser la sortie de la commande top pour que le nom de votre processus obtienne les informations d'utilisation de l'UC par processus.
8 représente l'utilisation du processeur par processus dans le résultat de la commande top de ma distribution Linux intégrée
la source
Pas assez de réputation pour commenter, mais pour psrecord vous pouvez aussi l'appeler directement, de manière programmatique, directement en Python:
la source
Si vous avez besoin des moyennes pour une période donnée d'un processus spécifique, essayez l'option cumulative -c de top:
"-c a" trouvé en haut pour Mac 10.8.5.
Pour Scientific Linux, l’option est -S, qui peut être définie de manière interactive.
la source
top
cette fonctionnalité. Ma version sur Fedora 19 ne le fait pas. Même chose sur Ubuntu 13.04.Je suis un peu en retard ici, mais je vais partager mon tour de commande en utilisant seulement la valeur par défaut
ps
J'utilise cela comme une ligne. Ici, la première ligne lance la commande et stocke le PID dans la variable. Ensuite, ps affichera le temps écoulé, le PID utilisé, le pourcentage de mémoire et la mémoire RSS. Vous pouvez également ajouter d'autres champs.
Dès que le processus se termine, la
ps
commande ne renverra pas "succès" et lawhile
boucle se terminera.Vous pouvez ignorer la première ligne si le PID que vous souhaitez profiler est déjà en cours d'exécution. Il suffit de placer l'identifiant souhaité dans la variable.
Vous obtiendrez une sortie comme celle-ci:
la source