web-dev-qa-db-fra.com

Comment puis-je enregistrer une vidéo comme sortie de commande supérieure pour la période de temps définie?

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.

3
Arronical

Vous pouvez utiliser les utilitaires 'script' et 'scriptreplay' pour accomplir cela.

  1. lancer un script avec l'option --timing:

    script --timing = top.timing topscript

  2. exécutez la commande top, laissez-la fonctionner aussi longtemps que vous le souhaitez

  3. quittez top en utilisant q ou control-c.

  4. quittez la session de script avec control-D (EOF) ou en tapant exit

  5. lancez scriptreplay pour rejouer le script:

    scriptreplay top.timing topscript

6
TREE

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.

6
heemayl

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.

1
Rmano