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