Například, když napíšu ping 8.8.8.8 &
, proč můžeme vidět, že proces pingu funguje? A když napíšu find / -name '*test*' &
, je také vidět na monitoru.
proč tomu tak je? Opravdu to není na pozadí?
Nejlepší odpověď
&
nařídí shellu, aby spouštěl příkaz na pozadí, tj. je rozvětvený a spouštěný v samostatném dílčím prostředí jako úloha asynchronně.
Všimněte si, že když vložíte &
výstup – stdout i stderr – bude stále vytištěno na obrazovce . Pokud na obrazovce nechcete vidět žádný výstup, přesměrujte oba stdout
a stderr
do souboru podle:
myscript > ~/myscript.log 2>&1 &
Obvykle můžete chtít zrušit stderr
přesměrováním na /dev/null
pokud se nebudete obávat pozdější analýzy chyb.
Příkazy/skripty můžete také spouštět současně, v samostatných dílčích shellech. Například;
./script1 & ./script2 & ./script3 &
Úlohu na pozadí lze vrátit zpět na příkazový řádek před dokončením příkazem:
fg <job-number>
job-number
lze získat spuštěním
jobs