1

Что делать, если я запускаю код (например, исполняемый файл) в интерфейсе командной строки Linux, а затем закрываю интерфейс? Продолжает ли исполняемый файл работать в фоновом режиме? Что делать, если требуется ввод данных пользователем? Могу ли я "вернуться к нему" (например, чтобы предоставить ему пользовательский ввод) во время более поздней сессии?

Изменится ли это поведение, если доступ к интерфейсу командной строки осуществляется удаленно (например, через SSH)?

2 ответа2

4

Если вы не выполнили указанную команду в такой программе, как screen или tmux ; или у вас есть фоновая (bg) и отречённая (disown) упомянутая программа, она будет убита, когда её родительская оболочка умрет (а закрытие окна эмулятора терминала уничтожит оболочку)

1

Вариации этого вопроса задавались ранее. Вы можете найти их, если будете искать на nohup , screen или tmux .

Но вкратце:
Когда вы закрываете соединение, сетевой интерфейс переходит в автономный режим, запущенная программа получает сообщение о том, что вы отключились (с SIGHUP), и завершает работу.

Если вы хотите, чтобы они продолжали работать, несмотря на это, вы должны указать им игнорировать этот сигнал зависания, что можно сделать, добавив команду nohup.

Гораздо более удобный способ - запустить screen или tmux который сохранит ваше состояние, пока оно не будет восстановлено. (И который может сделать намного больше).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .