Відповіді:
&Привертає оболонку для запуску команди у фоновому режимі, тобто, він роздвоєний і запустити в окремому субрахунку оболонки, як робота, асинхронно.
Зауважте, що коли ви поставите &вихід - і stdout, і stderr - він все одно буде надрукований на екран . Якщо ви не хочете бачити жодного виводу на екрані, перенаправляйте stdoutі stderrфайл, і файл:
myscript > ~/myscript.log 2>&1 &
Зазвичай ви можете скасувати stderr, перенаправляючи його, /dev/nullякщо ви не переживаєте за аналіз помилок пізніше.
Ви також можете одночасно запускати команди / сценарії в окремих підрозділах. Наприклад, наприклад;
./script1 & ./script2 & ./script3 &
Фонове завдання можна повернути до командного рядка, перш ніж воно закінчиться командою:
fg <job-number>
job-numberМожна отримати, виконавши
jobs
2>&1переадресація stderrна stdout.
stty tostopпризупинення фонових завдань буде припинено, якщо вони спробують написати до терміналу.
Під час використання &процес працює у фоновому режимі. Але його стандартний вихід все ще є терміналом.
Насправді ви можете працювати ping 8.8.8.8 &і find / -name '*test*' &в той же час (в результаті виходить змішаний вихід), але ви можете не працювати ping 8.8.8.8і find / -name '*test*'одночасно на одній оболонці.
Якщо ви нічого не хочете бачити, використовуйте щось подібне ping 8.8.8.8 &> /dev/null &.
Крім того, ви можете дізнатися про nohupта disown.
disownне заважає друкувати вихід на термінал.
/dev/nullяк файл для перенаправлення вихідного терміналу, якщо ви хочете відкинути вихід, а не зберегти його десь. І я прав , що2>&1переадресовуєstderrдоstdout? Можливо, ви теж хочете уточнити це ... Дякую.