Назад | Перейти на главную страницу

Что означает символ амперсанда (&) с `nohup`?

Я видел массу примеров, когда & следует за концом командной строки, но я не могу найти объяснения того, что он делает. Это даже не в nohupс man страница. Это ракушка?

Либо используя & или нет, я обнаружил, что любой процесс выполнялся с nohup кажется, что он невосприимчив к любому сигналу зависания.

Из страница руководства bash:

Если команда завершается оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке. Оболочка не ждет завершения команды, и статус возврата равен 0.

Так что да, это оболочка, и ее можно использовать с любой командой. По сути, он немедленно возвращает вам управление и позволяет команде завершиться в фоновом режиме. Это почти всегда используется с nohup потому что обычно вы хотите выйти из оболочки после запуска команды.

Использование амперсанда (&) запустит команду в дочернем процессе (дочернем по отношению к текущему сеансу bash). Однако при выходе из сеанса все дочерние процессы будут уничтожены.

использование nohup + амперсанд (&) будет делать то же самое, за исключением того, что по окончании сеанса родительский процесс дочернего процесса будет изменен на «1», который является процессом «init», таким образом предохраняя дочерний процесс от уничтожения.

Да, это оболочка - она ​​запускает команду в фоновом режиме, поэтому вам не нужно ждать возврата текущей команды, прежде чем вводить другие команды.