Comment rediriger stdout, stderr retour à /dev/tty
Je viens de ssh-ed à certains serveur distant et a constaté que stdout
et stderr
de toutes les commandes/processus, je suis en train de lancer dans bash est redirigé vers quelque part.
Donc, j'ai obtenu questions suivantes
Comment détecter:
1) le fichier stdout
, stderr
est en étant redirigés dans Linux?
et
2) Et comment rediriger par défaut stdout
et stderr
retour à /dev/tty?
Vous en remercie d'avance.
Comment avez-vous trouvé ça?
juste en tapant les commandes qui doivent sortie vers STDOUT et STDERR.
Est-il rien de pertinent dans .bashrc?
nope, tout semble absolument comme standart ec2 ubuntu par exemple(c'est l'instance ec2, btw).
pouvez-vous éditer votre post pour insérer un cas d'utilisation qui montre votre connectant via ssh, l'exécution d'une commande qui devrait produire une erreur et un cmd qui devrait produire une sortie (et inclure une sortie qui a eu lieu)? Bonne chance.
juste en tapant les commandes qui doivent sortie vers STDOUT et STDERR.
Est-il rien de pertinent dans .bashrc?
nope, tout semble absolument comme standart ec2 ubuntu par exemple(c'est l'instance ec2, btw).
pouvez-vous éditer votre post pour insérer un cas d'utilisation qui montre votre connectant via ssh, l'exécution d'une commande qui devrait produire une erreur et un cmd qui devrait produire une sortie (et inclure une sortie qui a eu lieu)? Bonne chance.
OriginalL'auteur Sergey | 2012-01-24
Vous devez vous connecter pour publier un commentaire.
Une commande qui devrait faire littéralement ce que vous avez demandé dans (2) est
Mais je pense que votre analyse du problème est incorrect. Il serait utile de voir la sortie de
ssh -v ...
(où...
est quels que soient les arguments que vous avez tapé dans votre originalssh
de commande).OriginalL'auteur zwol
La commande:
vous montrera les fichiers qui sont ouverts comme la sortie standard (descripteur de fichier 1) et stderr (descripteur de fichier 2).
1 -> pipe:[16418291]
à un pid?Je viens de trouver, à /proc, l'autre pid avec cette!
0 -> pipe:[16418291]
OriginalL'auteur caf
Il ne peut être fait que si votre désir shell est lancé avec un tuyau à
tee
de commande avec une autre console en tant que paramètre.Laissez-moi vous expliquer.
Si vous vous connectez
/dev/tty1
et quelqu'un d'autre se connecte à l'/dev/tty2
. Si vous commencez votre shell (bash) par la commande suivante tous les STDOUT/STDERR seront redirigés/copié dans un autre shell (/dev/tty2
dans ce cas).Donc, quelqu'un assis dans
/dev/tty2
permettra de voir l'ensemble de votre activité.Si quelqu'un les connexions shell est
/bin/bash 2>&1 | tee /dev/tty2
au lieu de/bin/bash
Il va arriver à chaque fois qu'il se connecte. Mais je ne suis pas sûr que le shell de connexion peut être réglé de cette façon.Si quelqu'un redirige la sortie de votre shell de cette façon, vous pouvez vérifier juste en vérifiant si tout
tee
est en cours d'exécution en arrière-plan.Ce sera quelque chose de sortie
OriginalL'auteur Shiplu Mokaddim
Une réponse à votre première question pourrait être trouvée dans
/proc/self/fd
. Il contient des liens symboliques vers les fichiers (ou d'autres choses, pipes, sockets, etc) que votre bash instance est connecté.Dans le premier exemple, vous pouvez voir les 3 premiers descripteurs de fichiers (qui sont le standard de sortie, d'entrée et d'erreur, respectivement) tout point à ma pseudo-terminal
/dev/pts/3
. Dans le deuxième exemple que j'ai redirigé l'entrée de/dev/null
, de sorte que l'entrée standard descripteur de fichier de points à/dev/null
. Et dans le dernier exemple que j'ai envoyé à la sortie dels
àcat
à travers un tuyau, et l'entrée standard descripteur de fichier est le reflet. Autant que je sache, il n'y a pas moyen de trouver le processus qui a l'autre extrémité du tuyau. Dans tous les exemples, il est le quatrième descripteur de fichier qui représente la poignée dels
a pour la lecture/proc/self/fd
. Dans ce cas, il dit:/proc/15537
parce que/proc/self
est en fait un lien symbolique vers/proc/pid
oùpid
est le PID du processus d'accès à/proc/self
.OriginalL'auteur Robbie Mckennie