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

È stato utile?

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)

  1. allegare al vostro processo utilizzando gdb
  2. eseguire quanto segue al gdb richiesta di reindirizzamento stdout a / tmp / newfile

    $ di stampa dup2 (aperto ( "/ tmp / newfile", 0), 1)

  3. eseguire il seguente al reindirizzamento stderr a / tmp / newfile

    $ di stampa dup2 (aperto ( "/ tmp / newfile", 0), 2)

  4. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top