43 votes

Est-il possible de lire la sortie de n'importe quel processus en utilisant son PID?

Est-il possible de joindre un terminal à un processus déjà en cours d'exécution en utilisant son PID de manière similaire à l'utilisation de la commande fg pour les tâches?

57voto

Vous pouvez obtenir les descripteurs de fichiers standard de ce processus, par exemple stdout :

tail -f /proc//fd/1

12voto

Il y a quelques options ici. L'une consiste à rediriger la sortie de la commande vers un fichier, puis à utiliser tail pour voir les nouvelles lignes ajoutées à ce fichier en temps réel.

Une autre option est de lancer votre programme à l'intérieur de screen, qui est une sorte d'application de terminal basée sur du texte. Les sessions Screen peuvent être attachées et détachées, mais sont nominalement destinées à être utilisées uniquement par le même utilisateur, donc si vous souhaitez les partager entre les utilisateurs.

Sinon, si vous le souhaitez, vous pouvez suivre le processus et voir ce qu'il fait avec strace:

strace -e trace=open -p 22254 -s 80 -o output.txt
  • -p PID: Attacher au processus avec l'ID de processus PID et commencer le traçage.
  • -s TAILLE: Spécifiez la taille maximale de la chaîne à imprimer (par défaut, c'est 32).
  • -o nom_fichier: Écrire la sortie du trace dans le fichier nom_fichier plutôt que sur l'écran (stderr).

4voto

devav2 Points 33862

Vous pouvez utiliser les commandes ci-dessous pour attacher un processus en cours d'exécution sur un autre terminal :

  • retty (Page de manuel : retty)
  • reptyr
  • screen

Exemple :

screen -S PID
retty $(pgrep PID)
reptyr PID

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X