Comment enregistrer la charge CPU dans un fichier afin d'enquêter sur un problème?
la source
Comment enregistrer la charge CPU dans un fichier afin d'enquêter sur un problème?
Cela fonctionne très bien:
while true; do uptime >> uptime.log; sleep 1; done
Cela enregistrera votre charge CPU chaque seconde et l'ajoutera à un fichier uptime.log
.
Vous pouvez ensuite importer ce fichier dans Gnumeric ou la feuille de calcul OpenOffice pour créer un joli graphique (sélectionnez «séparé par des espaces» lors de l'importation).
Comme Scaine l'a remarqué, ce ne sera pas suffisant pour diagnostiquer le problème. Donc, en plus, lancez ceci (ou utilisez sa réponse pour cette partie):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
Cela ajoutera les 10 processus les plus gourmands en CPU à un fichier ps.log
toutes les cinq secondes.
Notez que ce n'est pas la pleine quantité d'informations top
que vous fourniriez. Ce n'est que le top 10, et juste leur utilisation du processeur, l'utilisation de la mémoire et le premier argument (c'est-à-dire leur commande sans autres arguments, comme dans /usr/bin/firefox
)
Après avoir utilisé une feuille de calcul pour créer un graphique pour voir quand votre charge CPU a traversé le toit, vous pouvez ensuite rechercher dans ce fichier l'heure la plus proche pour voir quel processus l'a provoqué.
Voici à quoi ressembleront ces fichiers:
uptime.log
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 users, load average: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
...
ps.log
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
ps
est absurde, essayez de l'exécuter en tant que root.Vous pouvez exécuter la
top
commande en mode batch en utilisant l'-b
option, puis la vider dans un fichier.Au démarrage de votre PC, ouvrez un terminal, exécutez
top -b > ~/cpu.txt
Ensuite, lorsque votre PC se fige, ouvrez simplement le fichier texte (probablement énorme) et vérifiez la dernière entrée pour plus de détails sur ce qui fonctionnait juste avant le crash. En fait, le fichier sera si stupidement volumineux que vous feriez mieux d'exécuter un à la
tail -250 ~/cpu.txt
place.Vérifiez également votre /var/log/kern.log au cas où votre problème est lié au matériel (peu probable si cela ne se produit qu'après une mise à niveau, mais mérite néanmoins d'être vérifié).
la source
J'ai trouvé une excellente réponse de Christopher à cette question sur Unix et Linux qui utilise
top
:Cela vous donnera 1 itération de
top
puis arrêter, puis le pousser dans un fichier.la source
Pour ceux qui ont besoin d'exécuter cette commande après la fin de votre session putty (client SSH). vous pouvez utiliser la commande
screen
(ou l'installer en utilisantapt-get
)la source