Jak przekierować standardowe wyjście do wielu plików dziennika? Następujące nie działa:
some_command 1> output_log_1 output_log_2 2>&1
linux
io-redirection
tee
dubler
źródło
źródło
zsh
możesz użyćsome_command >output_log_1 >output_log_2
.Odpowiedzi:
Zobacz
man tee
:Odpowiednio:
źródło
cmd 2>&1 | tee log1 log2
próbowałem wykonać jak wyżej, ale muszę nacisnąć ctrl-c, aby przekierować go do drugiego pliku dziennika. również wyjście jest drukowane na konsoli. Chcę, aby dane wyjściowe polecenia były przekierowywane do dzienników, ale nie do konsoli. każda pomoc jest doceniana.tee
Polecenie zapisujestdin
do pliku (ów), a także dostdout
. Jeśli nie chcesz, aby dane wyjściowe pojawiały się na terminalu, musisz przekierować do tego,/dev/null
co zwykle.echo test | tee --append file1 file2
Załóżmy, że dane wyjściowe są generowane z funkcji
cmd()
:Aby przekierować wyjście z
cmd
dwóch plików, ale nie do konsoli, możesz użyć:Będzie to działać dla wielu plików, biorąc pod uwagę wszelkie źródła danych przesyłane do tee:
Będzie to również działać:
Bez
/dev/null
przekierowania tee wyśle wyjście na standardowe wyjście oprócz podanych plików.Na przykład, jeśli uruchomisz to z konsoli, zobaczysz tam wyjście. Uruchom z crontab, na wyjściu pojawi się komunikat o stanie, który zostanie wysłany do Ciebie (patrz również odpowiedź Gillesa tutaj https://unix.stackexchange.com/a/100833/3998 ).
To działało dla mnie w bash na Ubuntu 12.04 i zostało zweryfikowane w Ubuntu 14.04 przy użyciu GNU bash 4.3.11 (1), więc powinno działać na każdej najnowszej wersji bash GNU.
źródło
version 4.3.11(1)-release (i686-pc-linux-gnu)
) w Ubuntu 14.04.To stary post, ale właśnie go znalazłem ...
Zamiast przekierowywać dane wyjściowe
> /dev/null
, możesz przekierować je do ostatniego pliku:Lub do dołączenia wyniku:
źródło
-a
tee)Jak @jofel wspomniał w komentarzu pod odpowiedzią, można to zrobić natywnie w
zsh
:lub z rozszerzeniem nawiasu klamrowego:
Wewnętrznie działa to bardzo podobnie do
tee
odpowiedzi podanych powyżej. Powłoka łączy stdout polecenia z procesem, który potokuje do wielu plików; w związku z tym, nie ma żadnych istotnych zaletą techniczną robi to w ten sposób (ale to ma wyglądać naprawdę dobrze). Więcej informacji znajdziesz wzsh
instrukcji obsługi .źródło
Nie można jednak skomentować innego sposobu wyrażenia
Można to uprościć w przypadku wielu plików.
źródło
file1
przezfile8
co ich nazwami i są to prawdopodobnie tylko przykładowe zastępcze dla nazw plików