Jak przekierować wyjście działającego programu do / dev / null


19

Wiem, że aby ukryć wyjście programu, mogę go przekierować /dev/null, na przykład aby ukryć wszystkie komunikaty o błędach i ostrzeżeniach przed chromem, mogę uruchomić program w ten sposób

chromium-browser 2> /dev/null &

Jeśli jednak zapomnę o komunikatach o błędach i typie

chromium-browser &

(co jest dość denerwujące, gdy pojawiają się w środku polecenia). Nie wiem, co robić, oprócz zatrzymania aplikacji i ponownego uruchomienia jej poprawnie.

Czy mogę jakoś przekierować wyjście błędu bez ponownego uruchamiania aplikacji?

Odpowiedzi:


8

Możesz także uruchomić przeglądarkę bez nohup, a następnie zamknąć okno terminala, wykonując następujące czynności:

nohup chromium-browser &

W ten sposób przeglądarka uruchomi się i odłączy od konsoli, którą następnie można cicho zamknąć.


2
jest to do przyjęcia, z wyjątkiem tego, że muszę pamiętać, aby wpisaćnohup
phunehehe

5
@ phu Na Zsh przynajmniej możesz włożyć setopt nohupswój .zshrci nie będzie to wszystko, co uruchomisz; Nie jestem pewien co do innych pocisków
Michael Mrozek

tak, świetnie, lubię to w ten sposób!
phunehehe

3
Możesz też utworzyć alias ... alias chromium = nohup chromium
Pablo Olmos de Aguilera C.

22

Ten odpowiedział tutaj: tutaj przez vladr . Odpowiedź brzmi (cytując):

  • dołącz do danego procesu za pomocą gdb i uruchom:
  • p dup2 (open ("/ dev / null", 0), 1) (dla przekierowania standardowego)
  • p dup2 (otwarte ("/ dev / null", 0), 2) (dla przekierowania stderr)
  • odłączyć
  • porzucić

Wypróbowałem to na następującym skrypcie:

[edycja po pierwszym komentarzu:]

spać 10 #, aby mieć czas na dołączenie się do procesu
if ["$ sonorfather" == "ojciec"] # unikaj nieskończonej rekurencji 
następnie 
   sonorfather = syn ./test & 
fi 

podczas gdy prawda 
robić 
   echo „stdout $ sonorfather” 
   echo „stderr $ sonorfather”> i 2 
   spać 1 
gotowy 

Wyłączyłem wyjście stderr przed utworzeniem procesu son, oto dane wyjściowe:

stdout ojciec 
stdout syn 
stdout ojciec 
stdout syn 
[i tak dalej...]. 

Mam nadzieję, że odpowiedź na twoje pytanie: przekierowanie procesora son również zostało przekierowane.


3
to było bardzo dobre, ale wtedy mogę mieć problemy z chromem, ponieważ odradza się nowy proces dla każdej karty przeglądarki, a mimo to rozwiązać?
phunehehe

Edytowałem mój post, aby Ci odpowiedzieć.
Mike Perdide,

Wygląda na to, że będę musiał przekierować dane wyjściowe przed utworzeniem procesów potomnych? Dzięki za wiedzę, ale jeśli chodzi o złożoność, po prostu idę nohup:)
phunehehe

Technicznie rzecz biorąc /dev/null, powoduje to wyciek zduplikowanych deskryptorów plików , ale w praktyce nie wpływa to znacząco na nic.
Kevin,

6

Możesz także ustawić alias chromium-browserdo uruchamiania zamiast tegochromium-browser 2> /dev/null

np. jeśli używasz bash, edytuj /home/username/.bashrc i dodaj wiersz:

chromium-browser='chromium-browser 2> /dev/null'

Lub jeszcze lepiej

chrome='chromium-browser 2> /dev/null'

i zapisz kilka naciśnięć klawiszy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.