Mam program, który muszę uruchomić podczas uruchamiania, ma wyjście na stdout i stderr, które chcę przekierować do dziennika systemu za pomocą polecenia logger. W skrypcie uruchamiania mam to:
/ home / nazwa_katalogu / nazwa_aplikacji -v | logger 2> i 1 &
To przekierowuje stdout do syslog, ale stderr nadchodzi do konsoli, więc muszę udoskonalić polecenie.
shell
io-redirection
stdout
stdin
Fred Basset
źródło
źródło
>&
: tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlOdpowiedzi:
Musisz połączyć wyjście STDERR i STDOUT przed potokowaniem
logger
. Spróbuj zamiast tego:Przykład
Tutaj możesz również użyć skrótu, jeśli używasz go ostrożnie w rzeczywistej powłoce Bash (nie mylić z Dash):
UWAGA: Jest to równoważne z
<cmd1> 2>&1 | <cmd2>
. Ponownie użyj powyższego tylko podczas interaktywnego korzystania z rzeczywistej powłoki Bash, byłby to dobry sposób, aby do niej podejść.fragment z ABSG
Referencje
źródło
dash
spróbujesz wykonać skrypt podczas rozruchu tylko po to, aby zakończyć się niepowodzeniem i uruchomić proces rozruchu ... cóż ... Kiedy wspomniana jest taka składnia, powinna zawsze w kontekście interaktywnych muszli tylko , albo przynajmniej takie jest moje zdanie.2>&1
ale twoje ostrzeżenia są dość mądre, biorąc pod uwagę, że przykład dotyczy start-upów. Sprawię, że te ostatnie wskazówki będą bardziej widoczne z ostrzeżeniem, że są przeznaczone tylko do interaktywnych pocisków Bash.dash
- to naprawdę jest szybkie.