web-dev-qa-db-fra.com

"top" ne montre pas la sortie sur "ssh"

J'utilise

ssh user@Host top

pour afficher le top sortie de "Host", je reçois

TERM environment variable not set.

Quelle est la solution?

Comment puis-je exécuter top sur "Host" comme ça et voir la sortie?

2
rockstar

top affiche sa sortie sur un périphérique terminal, et non sur un flux standard (par exemple, STDOUT/STDERR). Comme il n'y a pas de terminal impliqué dans l'hôte distant lorsque vous effectuez:

ssh user@Host top

cela donne l'erreur à propos de la variable d'environnement TERM non définie.

Vous devez affecter un pseudo TTY sur l'hôte distant à l'aide de l'option -t de ssh:

ssh -t user@Host 'top'

Vous pouvez maintenant envoyer les clés à top de la manière habituelle, par exemple. q quitter, h pour obtenir de l'aide, etc.

Cette même solution s’applique à tous les programmes qui nécessitent un TTY pour afficher les résultats.


Par souci d'exhaustivité, vous pouvez affecter un pseudo TTY même s'il n'y a pas de TTY local impliqué, en utilisant plusieurs -ts par exemple:

ssh -tt user@Host 'top'
5
heemayl

Je vous recommande de procéder comme suit si vous souhaitez le voir sur votre hôte local:

ssh user@server -t "top" ou mieux encore ssh user@server -t "top -n1" pour que vous puissiez avoir une idée de l'état des ressources à ce moment-là.

Vous pouvez même l’améliorer pour le capturer sur un fichier de cette façon:

ssh user@server -t "top -n1 -b" > topOutputFile

1
Luis Alvarado