Команда Nohup в Linux

Linux Nohup Command

26 Апреля 2020 | Терминал

Обычно, когда вы запускаете программу по SSH, если ваше соединение прерывается или вы выходите из системы, сеанс завершается, и все процессы, выполняемые с терминала, останавливаются. Здесь nohup команда пригодится. Он игнорирует все сигналы зависания, и процесс продолжится.

Команда Nohup  в Linux

Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все SIGHUP сигналы (зависания). SIGHUP это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.


Как использовать команду nohup 

Синтаксис nohup команды следующий:

nohup COMMAND [ARGS]
 

Команда не принимает никаких других опций, кроме стандартных --help и --version .

Давайте посмотрим на следующий пример:

nohup mycommand 
nohup: ignoring input and appending output to 'nohup.out'
 

nohup запускает mycommand команду на переднем плане и перенаправляет вывод команды в nohup.out файл. Этот файл создается в текущем рабочем каталоге . Если пользователь, выполняющий команду, не имеет прав записи в рабочий каталог, файл создается в домашнем каталоге пользователя.

Если вы выйдете из системы или закроете терминал, процесс не прекратится.


Запуск команды в фоновом режиме 

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

Для запуска команды в фоновом режиме добавьте & символ в конце команды:

nohup mycommand & 

Вывод включает идентификатор задания оболочки (заключенный в квадратные скобки) и идентификатор процесса:

[1] 25177
 

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

Если по какой-либо причине вы хотите прервать процесс, используйте kill команду, за которой следует идентификатор процесса:

kill -9 25132 


Перенаправление вывода в файл

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

Например, чтобы перенаправить стандартный вывод и стандартную ошибку, mycommand.out вы должны использовать:

nohup mycommand > mycommand.out 2>&1 & 

Чтобы перенаправить стандартный вывод и стандартную ошибку в разные файлы:

nohup mycommand > mycommand.out 2> mycommand.err & 


альтернативы 

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

Screen

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

Tmux

Tmux - современная альтернатива экрану GNU. С Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, работающие в Tmux, продолжат работать, даже если вы закроете терминал.

Disown

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

Вывод 

nohup позволяет предотвратить завершение команд при выходе или выходе из терминала.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...