C'è un modo per ripristinare / recuperare nohup per visualizzare l'output nella console?
-
27-09-2019 - |
Domanda
So che le probabilità sono estremamente basse, ma c'è un modo per vedere ciò che un processo nohup-ed è stato l'output di recente?
Ho ancora questo processo aperto ma ho gestito con reindirizzando tutto l'output a / dev / null.
Quindi, c'è un modo per recuperare tale tornare processo per console, o è senza speranza: (
Saluti
Soluzione
C'è un modo, ma non è semplice, il trucco è quello di utilizzare dup2 e dipende dal fatto che il vostro programma è collegato contro libc (che tutti / c ++ applicazioni C sarebbe, ma un'applicazione Java non avrebbe fatto essere per esempio)
- allegare al vostro processo utilizzando gdb
-
eseguire quanto segue al gdb richiesta di reindirizzamento stdout a / tmp / newfile
$ di stampa dup2 (aperto ( "/ tmp / newfile", 0), 1)
-
eseguire il seguente al reindirizzamento stderr a / tmp / newfile
$ di stampa dup2 (aperto ( "/ tmp / newfile", 0), 2)
- Stacca gdb dal vostro processo e hai fatto
dup2 fa è
duplicare un descrittore di file Ciò significa che sia output / error (1 e 2) e il nuovo descrittore di file restituito da aprire possono essere utilizzati intercambiabili che farà sì che tutto l'output di andare a stdout e stderr per andare al file aperto.