Когда вам нужно «nohup», если вы уже используете «&»?

Сначала этот вопрос связан, но определенно не совпадает с этим очень приятным вопросом:

Разница между nohup, disown и &

Я хочу кое-что понять: когда я делаю «&», я прав?

Всегда полезно делать «nohup … &» или просто и достаточно?

Может ли кто-нибудь показать случай, когда вы будете использовать «&» и все еще хотите использовать «nohup»?

3 Solutions collect form web for “Когда вам нужно «nohup», если вы уже используете «&»?”

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

Обратите внимание, что это не очень точно. Некоторые команды, такие как cd являются функциями оболочки и обычно не разветвляют новый процесс. type cmd обычно скажет вам, является ли cmd внешней командой или функцией оболочки. type type говорит вам, что сам type является функцией оболочки.

nohup – это нечто другое. Он сообщает новому процессу игнорировать SIGHUP . Это сигнал, отправленный ядром, когда родительская оболочка закрыта.

Чтобы ответить на ваш вопрос, выполните следующие действия:

  1. run emacs & (по умолчанию должен запускаться в отдельном окне X) .
  2. на родительской оболочке, запустите exit .

Вы заметите, что окно emacs убито, несмотря на то, что он работает в фоновом режиме. Это поведение по умолчанию, и nohup используется именно для его изменения.

Запуск задания в фоновом режиме (с помощью & или bg , я уверен, что другие оболочки имеют и другие синтаксисы) – это оболочечная функция, обусловленная возможностью использования современных систем для многозадачности. Вместо того, чтобы развернуть новый экземпляр оболочки для каждой программы, которую вы хотите запустить, современные оболочки ( bash , zsh , ksh , …) будут иметь возможность управлять списком программ (или заданий ). Только один из них за один раз может быть на переднем плане , то есть он получает фокус оболочки. Я хотел бы, чтобы кто-то мог расширить возможности различий между процессом, выполняющимся на переднем плане, и одним в фоновом режиме (основной из них – для stdin / stdout ).

В любом случае это не влияет на способ реагирования дочернего процесса на SIGHUP . nohup делает.

Всегда полезно делать nohup ... & ? Да. Если вы только начинаете процесс «в фоновом режиме» с & , этот новый процесс все еще имеет членство в «группе процессов» исходной оболочки. Если эта оболочка или группа процессов получают определенные сигналы (например, SIGHUP), по умолчанию они выходят. Это означает, что если вы запустите процесс с помощью & из оболочки, запущенной xterm или rxvt или каким-либо другим эмулятором терминалов окон, при закрытии окна фоновый процесс получит SIGHUP. Наиболее случайно написанный код не обрабатывает SIGHUP и, следовательно, выходит.

Если вы nohup ... & , команда nohup устанавливает SIGHUP для игнорирования, а затем выполняет команду. Эта новая команда exec'ed сохраняет маску сигнала nohup setup, если только команда не выполняет некоторую обработку сигнала. Если вы закрываете xterm или rxvt или что-то еще, ядро ​​передает SIGHUP в процесс команды, который игнорируется. Он продолжает работать.

Выполнение nohup в команде позволяет продолжить работу после закрытия xterm или выйти из системы.

если вы запустите программу в фоновом режиме (с & как суффикс) в операционной системе Linux и выйдите из системы, даже после этого она будет продолжать работать: попробуйте:

  ping google.com > ping_result & 

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

другой сценарий ==>, как указано выше для nohup emac & ->, который должен поддерживать emac после выхода из системы, но он не показывает работу после входа в систему.

  • Почему я не мог убить процесс NOHUP?
  • Предотвращение отключения терминала от убийства текущей работы в zsh
  • Процесс nohup не работает в ssh
  • Использование `nohup` для импорта дампа MySQL на сервере Debian
  • Синтаксическая ошибка при попытке установить петлю оболочки nohup
  • Как сохранить процессы, выполняемые на удаленном сервере, даже после выключения терминальной машины?
  • Как запустить ssh -t user @ remote 'sudo nohup bash -c "команда" в фоновом режиме
  • nohup: игнорирование ввода и перенаправление stderr в stdout
  • nohup с концом <& -
  • Как предотвратить смерть программы, когда ее сеанс ssh умирает?
  • Запуск нескольких команд nohup в фоновом режиме
  • Interesting Posts

    и всегда эквивалентны?

    nm-апплет отлично работает из командной строки, но не при запуске

    Вставить после второго шаблона в sed

    Бэш-хвост -f при чтении и трубке

    Будет ли stat () вызывать реальный доступ к жесткому диску или кэширование информации?

    Как изменить получателя при отскакивании электронной почты в Mutt?

    Попытка установить кластер, DHCP не запускается

    Арифметический арифметический с плавающей запятой зависит?

    Диск появляется ОК, будет читать / записывать в LiveCD, не загружаться, останавливается при initramfs / busybox

    Найдите точное совпадение идентификатора, который всегда находится на одной строке ниже шаблона через grep

    Используйте sed, чтобы хранить только части файла и изменять его порядок (на основе синтаксиса textWrangler grep)

    Как написать программу, которая может работать на компьютере без операционной системы?

    NetworkManager должен запрашивать только «верхний» DNS-сервер

    Невозможно выполнить печать из fluxbox, если я не впервые вхожу в систему с другим WM

    Проводят вывод команды в переменную в кубе awk-скрипта

    Linux и Unix - лучшая ОС в мире.