3

Возможный дубликат:
Как мне развить процесс, который не умирает при выходе из оболочки?

Иногда я удаленно подключаюсь к своей Ubuntu, используя NX. Затем я запускаю некоторые задания в фоновом режиме, например:

$ /path/to/script.pl &

Однако, когда я выхожу, задания перестают выполняться.

Как я могу заставить их продолжать работу даже после выхода из системы?

4 ответа4

3

Оболочка убивает все процессы в своей группе процессов, когда она заканчивается, отправляя SIGHUP.

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

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

2

Я думаю, что другой альтернативой будет использование экрана.

1

Вы можете использовать nohup

nohup /path/to/script.pl &
1

См. "Поддержание работы сценариев Linux после закрытия удаленной оболочки", чтобы узнать, как это сделать с помощью команды screen.

Ответ заключается в инструменте командной строки, который называется screen.

Экран позволяет запустить процесс на виртуальном экране, затем отсоединить этот экран и сделать еще что-нибудь (включая выход из системы). Вы также можете снова прикрепить экран после выхода из системы> и повторного входа в систему.

Если у вас нет команды screen на вашем удаленном Linux-компьютере, сначала установите ее из исходного кода или с помощью вашего любимого менеджера пакетов. Затем войдите в удаленный ящик и запустите желаемую команду с префиксом «screen». Например:

верх экрана

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

Повторное подключение экрана в любое время так же просто, как выполнение команды:

экран -r

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