Existe-t-il un moyen de restaurer / récupérer nohup pour voir la sortie dans la console?

Je sais que les chances sont extrêmement faibles, mais y a-t-il un moyen de voir ce qu’un processus sans publication a produit récemment?

J’ai toujours ce processus ouvert mais je le lance avec la redirection de toutes les sorties vers / dev / null.

Y a-t-il un moyen de récupérer un tel processus sur la console, ou est-ce que c’est sans espoir 🙁

À votre santé

Il y a un moyen mais ce n’est pas simple, l’astuce consiste à utiliser dup2 et dépend du fait que votre programme est lié à libc (ce que seraient toutes les applications c / c ++, mais une application Java ne serait pas par exemple )

  1. attacher à votre processus en utilisant gdb
  2. exécutez la commande suivante à l’invite gdb pour redirect stdout vers / tmp / newfile

    $ print dup2 (open (“/ tmp / newfile”, 0), 1)

  3. lancez la commande suivante pour redirect stderr vers / tmp / newfile

    $ print dup2 (open (“/ tmp / newfile”, 0), 2)

  4. détacher gdb de votre processus et votre fait

Ce que fait dup2 est

dupliquer un descripteur de fichier Cela signifie que stdout / stderr (1 et 2) et le nouveau descripteur de fichier retourné par open peuvent être utilisés de manière interchangeable, ce qui fera passer toutes les sorties vers stdout et stderr vers le fichier que vous avez ouvert.