Na przykład, kiedy piszę ping 8.8.8.8 &, dlaczego możemy zobaczyć, że działa proces ping? A kiedy piszę find / -name '*test*' &, widać to również na monitorze.
Dlaczego? Czy to nie jest tak naprawdę w tle?
Na przykład, kiedy piszę ping 8.8.8.8 &, dlaczego możemy zobaczyć, że działa proces ping? A kiedy piszę find / -name '*test*' &, widać to również na monitorze.
Dlaczego? Czy to nie jest tak naprawdę w tle?
Odpowiedzi:
&Kieruje skorupę, aby uruchomić komendę w tle, to znaczy, że jest rozdwojony i uruchomić w osobnym sub-shell, w pracy, w sposób asynchroniczny.
Zauważ, że po umieszczeniu &wyjścia - zarówno standardowego, jak i standardowego - nadal będzie drukowane na ekranie . Jeśli nie chcesz wyświetlać żadnych danych wyjściowych na ekranie, przekieruj zarówno plik , jak stdouti stderrplik do:
myscript > ~/myscript.log 2>&1 &
Zwykle możesz odrzucić stderr, przekierowując go, /dev/nulljeśli nie martwisz się późniejszą analizą błędów.
Możesz także uruchamiać polecenia / skrypty w tym samym czasie, w osobnych podpowłokach. Na przykład;
./script1 & ./script2 & ./script3 &
Zadanie w tle można przywrócić do wiersza poleceń, zanim zakończy się ono poleceniem:
fg <job-number>
job-numberMożna uzyskać uruchamiając
jobs
2>&1przekierowuje stderrdo stdout.
stty tostopspowoduje to zawieszenie zadań w tle, jeśli spróbują napisać na terminalu.
Podczas używania &proces działa w tle. Ale jego standardowym wyjściem jest nadal terminal.
W rzeczywistości, można uruchomić ping 8.8.8.8 &i find / -name '*test*' &w tym samym czasie (w wyniku mieszanej wyjściu), ale nie może działać ping 8.8.8.8i find / -name '*test*'jednocześnie na tej samej powłoki.
Jeśli nie chcesz nic widzieć, użyj czegoś takiego ping 8.8.8.8 &> /dev/null &.
Dodatkowo możesz chcieć dowiedzieć się o nohupi disown.
disownnie zapobiega wydrukowaniu danych wyjściowych na terminalu.
/dev/nulljako pliku do przekierowania wyjścia terminala, jeśli chce się go wyrzucić zamiast go gdzieś zapisać. I czy mam rację, że2>&1przekierowujestderrdostdout? Może też chcesz to wyjaśnić ... Dzięki.