2017-05-28 3 views
0

Je suis en train d'effectuer un test de stabilité impliquant plusieurs processus importants que je veux pouvoir surveiller individuellement (CPU, mémoire, IO, etc), je sais que je peux utiliser la commande TOP, mais l'utilisation de cette commande se traduira par la visualisation de métriques en direct et maintenant globalement ou en moyenne que je peux dériver dans un graphique et voir comment c'était au fil du temps. Comment puis je faire ça?surveiller les processus Linux pendant une longue période et les enregistrer dans un fichier texte ou un fichier csv

Répondre

0

Vous pouvez toujours utiliser top, l'impression de la sortie d'une seule instance à un fichier, puis en utilisant grep pour isoler les processus que vous voulez voir, puis en utilisant awk pour sélectionner les champs que vous souhaitez.

Quelque chose comme

top -n 1 -b > /tmp/log_top_running ; grep <process_name> /tmp/log_top_running | awk '{print $10}' >> <report_file> 

extraira le temps d'exécution de processus et l'ajouter au fichier de rapport. -b est d'éviter les caractères d'échappement dans le fichier, -n 1 se termine top après la première actualisation.

C'est la chose la plus simple que vous pouvez faire - vous pouvez probablement faire quelque chose de plus intelligent en passant à top les drapeaux pour n'imprimer que ce que vous voulez voir. Pour l'exécuter régulièrement, vous pouvez écrire cette commande dans un script et utiliser la commande watch, en définissant un intervalle en secondes avec l'option -n. Après avoir votre fichier, vous pouvez le tracer.

Espérons que ça aide.

+0

cela fonctionne mais je ne peux pas voir le nom des colonnes (par exemple% CPU,% MEM, etc) comment puis-je maintenir cela? – ErezN

+0

Avant de commencer la collecte de données, faites un 'grep' avec la chaîne' MEM' et le fichier de rapport devrait avoir les bons en-têtes. –

+0

Modifié pour enregistrer dans un fichier temporaire, pour éviter d'avoir à nettoyer. Vérifiez simplement qu'il n'y a pas de fichier portant ce nom ou modifiez-le en conséquence. –