GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit přesměrování výstupu běžícího procesu?

Vím, jak přesměrovat výstup a jak je potlačit v bash. Nyní předpokládejme, že jsem omylem zapomněl k příkazu připojit část přesměrování výstupu (např. 2>&1 nebo > /tmp/mystdout ) a můj proces na pozadí již nějakou dobu běží, mohu se přesto změnit na stdout a stderr jsou psány? Opravdu bych rád nezabil a nerestartoval aplikaci.

Abych byl konkrétnější, jak požádal Gilles ve svém komentáři, rád bych si s tím pohrál v těchto scénářích konkrétně:

  • nesprávný výstupní soubor
  • zapomněli jste přesměrovat stderr na stdout

nebo kombinaci obou

Např. Mám spuštěný Apache a vidím deskriptory souborů:

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

Přijatá odpověď:

Můžete to udělat pomocí přesměrování (https://github.com/jerome-pouiller/reredirect/).

reredirect -m /dev/null <PID>

Počáteční výstup vašeho procesu můžete později obnovit pomocí něčeho jako:

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

(<M> a <N> jsou poskytovány předchozím spuštěním přesměrování).

přesměrování README také vysvětluje, jak přesměrovat na jiný příkaz nebo přesměrovat pouze stdout nebo stderr.


Linux
  1. Jak zobrazit výstup běžícího procesu v jiné relaci Bash?

  2. Linux – jak získat čas nástěnných hodin běžícího procesu?

  3. Jak změnit název hostitele?

  1. Jak změnit název hostitele na Ubuntu

  2. Jak přesměrovat výstup již běžícího procesu

  3. Jak přesměrovat výstup system() do souboru?

  1. Změnit prostředí běžícího procesu?

  2. Jak mohu znát absolutní cestu běžícího procesu?

  3. Jak mohu získat čas nástěnných hodin běžícího procesu?