Жизнь фоновой программы

Жизнь фоновой программы

Если запустить фоновую программу в терминале с помощью опции &, остановится ли она, когда вы закроете терминал?

решение1

Это останавливается, когда вывешать трубкутерминал. Терминалы не обязательно имеют концепцию бытиязакрыто.

С терминаломпрограмма-эмулятор, ничего реального не зависает, но закрытие программы эмулятора вызывает эмулируемое зависание терминала. (Более строго: закрытие главной стороны псевдотерминального устройства квалифицируется как зависание терминала на подчиненной стороне.) Не все программы эмуляторов имеют понятие закрытия. Та, которая встроена в ядро ​​операционной системы, предоставляя ядрувиртуальные терминалы, например, не может быть «закрыт».

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

Все это восходит к временам систем разделения времени с удаленными терминалами, где пользователи получали счет за использование. Если кто-то случайно терял телефонное соединение, он, безусловно, не хотел получать счет за программы, которые все еще работали, возможно, до следующего перезапуска системы. И наоборот, системные администраторы и другие пользователи не хотели, чтобы программы все еще работали и были подключены к теперь условно свободным терминалам, которые затем могли быть назначены другим пользователям коммутируемого доступа.

С тех пор многое изменилось. Управление заданиями BSD, для начала, вдохновило на изменения в распределении сигнала отбоя и введение понятияруководитель сессиикоторый отвечает за задания в сеансе входа и чья смерть считается сокрушительным ударом по этим заданиям. Мы получили удаленный вход через Интернет, и идеясеанс входа в графический интерфейс. А программы-эмуляторы терминалов стали настолько распространенными, что люди путают их с терминалами, которые они представляют.эмулирующий.

Но основная идея остается прежней: пользовательские процессы в обычном случае завершаются — каким-то образом, даже если это происходит при посредничестве лидера сеанса — когда завершается их конечный сеанс.

решение2

ПосещатьЗапуск программ в фоновом режиме из терминалаилиСамый эффективный способ запуска и отделения программы от терминала?

Если запустить фоновую программу в терминале с помощью опции &, остановится ли она, когда вы закроете терминал?

Я считаю, что закрытие gnome-terminalпутем нажатия кнопки «Закрыть» может привести к остановке/завершению этой программы.Ноесли вы закроете терминалexitкоманда, после которой программа не закроется/не остановится/не будет завершена.

решение3

Да, остановится. Чтобы избежать остановки программы, используйте nohup.

Например, nohup firefox > /dev/null 2>&1 &, позволит запустить Firefox в фоновом режиме без закрытия и предотвратит отображение ошибок/вывода на консоли.

Связанный контент