Навіщо запускати команду оболонки Linux за допомогою "&"?
Щоб негайно повернути своє запит і запустити процес у фоновому режимі.
Яка функція у них?
nohup дозволяє фоновому процесу продовжувати працювати навіть після того, як користувач вийде (або вийшов із ініціюючої оболонки).
> & перенаправляє як стандартний вихід, так і стандартну помилку у файл журналу.
& запускає всю справу у фоновому режимі, одразу повертаючи вас.
Пояснення:
Кожен процес Linux відкриває три канали вводу / виводу, вхід "stdin", стандартний вихід "stdout" та стандартний вихід помилок "stderr". Їх можна використовувати для двійкових, але вони традиційно є текстовими. Коли більшість програм бачать stdin близько, вони виходять (це може змінити програміст).
Коли вихідна оболонка виходить, stdin закривається на дітей, і (часто, як правило) діти також виходять. Крім того, діти отримують програмний сигнал SIGHUP, який вказує, що користувач "повісив трубку" (раніше модем), і за замовчуванням тут також потрібно вийти. (Зверніть увагу, програміст може змінити все це під час написання програми).
Отже, те, що робить Nohup - це дати дитині обробляти окреме середовище вводу / виводу, прив’язуючи входи та виходи до чогось, що не пов'язане з батьківською оболонкою, і захищати дитину від сигналу SIGHUP. Після того як користувач відключиться, ви побачите фоновий процес nohup, що належить init (процес 1), а не оболонку користувача.
Однак робота nohup
не може повністю виконати, якщо процес запускається на передньому плані, тому &
використовується для запуску програми у фоновому режимі, де вона може радісно працювати з користувачем або без нього.