GNU/Linux >> Linux Esercitazione >  >> Linux

Come modificare il reindirizzamento dell'output di un processo in esecuzione?

So come reindirizzare l'output e come sopprimerli in bash. Ora, supponiamo che io abbia accidentalmente dimenticato di aggiungere la parte di reindirizzamento dell'output al comando (ad es. 2>&1 o > /tmp/mystdout ) e il mio processo in background è già in esecuzione da un po', posso ancora passare a dove stdout e stderr vengono scritti? Vorrei davvero non uccidere e riavviare l'applicazione.

Per essere più precisi come chiesto da Gilles nel suo commento, vorrei giocherellare con esso in questi scenari nello specifico:

  • File di output errato
  • dimenticato di reindirizzare stderr a stdout

o una combinazione di entrambi

Per esempio. Ho Apache in esecuzione e posso vedere i descrittori di file:

/proc/8019/fd/0 -> /dev/null
/proc/8019/fd/1 -> /dev/null
/proc/8019/fd/2 -> /var/log/apache2/error.log

Risposta accettata:

Puoi farlo usando il reindirizzamento (https://github.com/jerome-pouiller/reredirect/).

reredirect -m /dev/null <PID>

Puoi ripristinare l'output iniziale del tuo processo in un secondo momento usando qualcosa come:

reredirect -N -O <M> -E <N> <PID>

(<M> e <N> sono forniti dal precedente lancio del reindirizzamento).

reindirizzare README spiega anche come reindirizzare a un altro comando o reindirizzare solo stdout o stderr.


Linux
  1. Come visualizzare l'output di un processo in esecuzione in un'altra sessione Bash?

  2. Come modificare il nome host?

  3. UNIX/Linux:Come cambiare la gentilezza (priorità) di un processo

  4. Come cambiare il nome host su Ubuntu

  5. Come reindirizzare l'output di system() su un file?

Come elencare i processi in esecuzione in Linux

Come modificare la priorità di un processo in Linux

Come modificare il colore di output di "Echo" in Linux

Come posso reindirizzare o reindirizzare l'output di curl -v?

Come reindirizzare l'output di un'applicazione in background a /dev/null

Come posso conoscere il percorso assoluto di un processo in esecuzione?