Що означає символ ampersand (&) з "nohup"?


11

Я бачив безліч прикладів, де &слідує кінець командного рядка, але я не можу знайти пояснення того, що це робить. Це навіть не в nohup«S manсторінці. Це оболонка?

Якщо я використовую &чи ні, я вважаю, що будь-який процес, запускається з якого, nohupздається, виявляє імунітет до будь-якого сигналу відключення.


1
"Я вважаю, що будь-який процес, запущений з nohup, здається, не виявляє імунітету до будь-якого сигналу про підключення". Ось для чого ногуп.
Семюель Едвін Уорд

Гаразд, дозвольте мені уточнити: єдині приклади, які я бачив, використовують &, тому я не був впевнений, чи &є якийсь модифікатор чи аргументація, яка змусила nohupсебе вести себе інакше.
Чад Гаррісон

1
Це підозріла річ. Насправді це не модифікує поведінку nohup (nohup навіть не отримує це бачити), але змінює поведінку оболонки.
Семюель Едвін Уорд

nohup & -> Не Хангуп і тло його. З давніх часів модеми та серійні термінали. Коли мій термінал і модем переходять у режим офлайн, продовжуйте обробляти це у фоновому режимі, щоб робота була виконана, коли я наступного разу перейду в Інтернет.
Фіаско Лабораторії

Відповіді:


19

З сайту bash manpage :

Якщо команду припиняє оператор управління &, оболонка виконує команду у фоновому режимі в нижній частині. Оболонка не чекає завершення команди, а стан повернення дорівнює 0.

Так, так, це оболонка, і її можна використовувати з будь-якою командою. По суті, він негайно повертає вам контроль і дозволяє команді виконуватись у фоновому режимі. Це майже завжди використовується, nohupоскільки ти зазвичай хочеш вийти з оболонки після запуску команди.


4
Нещодавно я бачив, як ви публікуєте купу хороших відповідей, і мій мозок завжди перекладає ваше ім’я користувача на МакГейвер. Не впевнений, чому я відчуваю потребу сказати вам це.
MDMarra

1
@MDMarra Я сприйму це як комплімент ;-)
mgorven

1
@MDMarra Принаймні ви не думаєте: "МакГрубер"
Уорд - Відновіть Моніку

7

Використання ampersand (&) запустить команду в дочірньому процесі (дочірній до поточного сеансу bash). Однак, коли ви виходите з сеансу, всі дочірні процеси будуть знищені.

використання nohup + ampersand (&) зробить те ж саме, за винятком того, що коли сеанс закінчиться, батько дочірнього процесу буде змінено на "1", що є "init" процесом, тим самим уберегши від загибелі дитини.


3

Так, це оболонка - вона виконує команду у фоновому режимі, тому вам не доведеться чекати, коли поточна команда повернеться, перш ніж видавати більше команд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.