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?
źródło
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?
&
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 stdout
i stderr
plik do:
myscript > ~/myscript.log 2>&1 &
Zwykle możesz odrzucić stderr
, przekierowując go, /dev/null
jeś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-number
Można uzyskać uruchamiając
jobs
/dev/null
jako pliku do przekierowania wyjścia terminala, jeśli chce się go wyrzucić zamiast go gdzieś zapisać. I czy mam rację, że2>&1
przekierowujestderr
dostdout
? Może też chcesz to wyjaśnić ... Dzięki.2>&1
przekierowujestderr
dostdout
.stty tostop
spowoduje 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 &
ifind / -name '*test*' &
w tym samym czasie (w wyniku mieszanej wyjściu), ale nie może działaćping 8.8.8.8
ifind / -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
nohup
idisown
.źródło
disown
nie zapobiega wydrukowaniu danych wyjściowych na terminalu.