2017-06-21 2 views
-1

Dites, hypothétiquement, je démarre un processus en arrière-plan et redirige ses stdout et stderr vers un fichier arbitraire quelque part. Des mois plus tard, le processus est toujours en cours et j'ai oublié où se trouve ce fichier. Si je connais l'ID du processus, comment puis-je programmer l'emplacement à l'endroit où il envoie sa sortie?Bash: obtenir l'emplacement de stderr et stdout

+1

Cherchez la 'commande lsof' – 123

Répondre

3

Avec Linux, vous pouvez exécuter:

ls -l /proc/PROCESS_ID/fd/1 /proc/PROCESS_ID/fd/2 
+2

Vous pouvez utiliser' readlink' au lieu de 'ls -l', pour obtenir juste le nom de fichier. – 123

+0

@ 123: Merci. Ou avec GNU find: 'find/proc/PROCESS_ID/fd -name '[12]' -printf '% l \ n" ' – Cyrus