La commande top
génère une sorte de vue en direct des processus et de leur utilisation des ressources dans un système.
Je voudrais démarrer un programme sur une installation de serveur, qui lance une variété de processus différents, avec des PID non prévisibles, et capture la sortie changeante de top
, sans avoir à s'appuyer sur une connexion SSH à partir d'un ordinateur de bureau. environnement. De préférence, j'aimerais pouvoir "rejouer" cela dans le même environnement CLI, comme s'il s'agissait d'une vidéo, mais je pouvais également déplacer le fichier ailleurs pour le visualiser comme ceci.
Existe-t-il un moyen en ligne de commande uniquement, depuis un terminal direct sur une installation de serveur que je puisse enregistrer cette sortie pendant une période définie? Soit en entrant une valeur pour le temps, soit en démarrant et en arrêtant manuellement le processus d'enregistrement.
Vous pouvez utiliser les utilitaires 'script' et 'scriptreplay' pour accomplir cela.
lancer un script avec l'option --timing:
script --timing = top.timing topscript
exécutez la commande top, laissez-la fonctionner aussi longtemps que vous le souhaitez
quittez top en utilisant q ou control-c.
quittez la session de script avec control-D (EOF) ou en tapant exit
lancez scriptreplay pour rejouer le script:
scriptreplay top.timing topscript
Le mode de fonctionnement normal de top
ne convient pas pour enregistrer le résultat dans un fichier.
Vous pouvez utiliser le mode -b
(batch) de top
avec l'intervalle de temps approprié pour la vérification (-d
) et le nombre d'itérations pour le compte (-n
).
Vous pouvez également mentionner des PID spécifiques (-p
) à vérifier uniquement.
Par exemple:
top -b -d 5 -n 3 -p 1089,2345 >output.txt
exécutera top
en mode de traitement par lots, effectuera 3 itérations après 5 secondes chacune et ne surveillera que les deux PID mentionnés (1089, 2345). La sortie sera enregistrée dans output.txt
.
Changez les valeurs pour répondre à vos besoins.
Ce n'est pas exactement identique à top
, mais vous pouvez utiliser ce script:
while true; do
echo
echo $(date)
echo
ps -eo pid,user,pri,ni,vsize,rss,stat,pcpu,pmem,time,wchan --sort=-pcpu | head -20
sleep 5
done > ps.log
Vous aurez plus ou moins les informations top
dans le fichier ps.log
. Pour plus d'informations sur la commande ps
, reportez-vous à la section man ps
.