Jak przekierować dane wyjściowe aplikacji w tle do / dev / null


100

Chciałbym przekierować dane wyjściowe wygenerowane z aplikacji działającej w tle w systemie Linux do / dev / null.

Używam edytora tekstu Kate i wyświetla on wszystkie komunikaty debugowania na terminalu, które chciałbym przekierować do / dev / null.

Masz pomysł, jak to zrobić?

Dzięki


Odpowiedzi:


230

Używasz:

yourcommand  > /dev/null 2>&1

Jeśli powinien działać w tle, dodaj plik &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1oznacza przekierowanie stdoutdo /dev/nullAND stderrdo miejsca, które stdoutwskazuje w tym czasie

Jeśli chcesz stderrwystępować na konsoli i stdoutprzechodzisz tylko do /dev/null, możesz użyć:

yourcommand 2>&1 > /dev/null

W tym przypadku stderrjest przekierowywany do stdout(np konsola), a potem oryginału stdoutjest przekierowywany do/dev/null

Jeśli program nie powinien się zakończyć, możesz użyć:

nohup yourcommand &

Bez żadnego parametru wszystkie wyjścia lądują w nohup.out


oba działają, ale jest niewielka różnica, ale nie pamiętaj
evildead

ah ok, dostałem to i dodałem inną wersję
evildead

Jeśli jest to ostatnie polecenie w pliku bash, zauważyłem, że opuszcza konsolę poleceń, która wywołała plik, bez zachęty.
Dennis

@elig przekierowanie wyjścia już uruchomionej aplikacji nie jest możliwe imo, a przynajmniej nie jest tak łatwe, ponieważ przekierowanie przez dup2()następuje bezpośrednio po, fork()ale przed exec*(). Po exec*()wykonaniu programu powłoka nie ma możliwości przekierowania wyjścia tego procesu. Popraw mnie, jeśli się mylę, ale nie wiem o powłoce, która zaimplementowała taką funkcjonalność.
evildead

3

Będą one również przekierowywać zarówno:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

chociaż podręcznik basha mówi, że pierwszy jest preferowany.

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.