Comment enregistrer la charge du processeur dans un fichier pour enquêter sur un problème?
Réponses
Trop de publicités?Cela fonctionne très bien:
while true; do uptime >> uptime.log; sleep 1; done
-
Cela enregistrera votre charge cpu toutes les secondes et l'ajoutera à un fichier
uptime.log
.Ensuite, vous pouvez importer ce fichier dans Gnumeric ou dans 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é, cela ne suffira pas pour diagnostiquer le problème. Donc, en plus, exécutez 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.Remarquez que ce n'est pas l'ensemble complet d'informations que
top
vous donnerait. Il s'agit simplement des 10 premiers, et simplement leur utilisation CPU, utilisation mémoire et le premier argument (c'est-à-dire leur commande sans autres arguments, comme/usr/bin/firefox
)
Après avoir utilisé une feuille de calcul pour créer un graphique afin de voir quand votre charge cpu a atteint des sommets, vous pouvez ensuite rechercher ce fichier pour trouver l'heure la plus proche et voir quel processus l'a causé.
Voici à quoi ressembleront ces fichiers :
uptime.log
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 utilisateurs, charge moyenne: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 utilisateurs, charge moyenne: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 utilisateurs, charge moyenne: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 utilisateurs, charge moyenne: 0.92, 1.24, 1.21
...
ps.log
%CPU %MEM ARGS Lun 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 Lun 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
...
Vous pouvez exécuter la commande top
en mode lot en utilisant l'option -b
, puis enregistrer le résultat dans un fichier.
Au démarrage de votre PC, ouvrez un terminal, puis exécutez
top -b > ~/cpu.txt
Ensuite, lorsque votre PC se fige, il vous suffit d'ouvrir le fichier texte (probablement énorme) et de vérifier la dernière entrée pour obtenir des détails sur ce qui s'exécutait juste avant le plantage. En fait, le fichier sera si ridicule que vous feriez mieux d'exécuter tail -250 ~/cpu.txt
à la place.
Vérifiez également le fichier /var/log/kern.log au cas où votre problème serait lié au matériel (peu probable si cela se produit seulement après une mise à jour, mais cela vaut la peine de vérifier quand même).
J'ai trouvé une excellente réponse de Christopher à cette question sur Unix et Linux qui utilise top
:
top -n 1 -b > top.out
Cela vous donnera une itération de top
puis s'arrêtera, et ensuite le poussera vers un fichier.