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

12 set 2022 2 min di lettura
Как использовать команду nohup в Linux
Indice dei contenuti

Введение

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

SIGHUP — это сигнал, посылаемый процессу, когда его терминал управления закрыт.

Обычно, когда вы запускаете команду через SSH, если соединение потеряно или отключено, сеанс SSH завершается, и все команды, выполняемые с терминала, прекращаются.

Сервер Nohup, чтобы избежать прерывания команд. Он будет игнорировать все сигналы зависания, и команды будут продолжать работать.

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

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

nohup COMMAND [ARGS]

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

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

nohup mycomand

Вы должны получить выходное сообщение, подобное следующему:

nohup: ignora input e aggiunge output a 'nohup.out'

nohup запустит команду mycommand на переднем плане и перенаправит вывод команды в файл nohup.out.

Этот файл будет создан в текущем рабочем каталоге.

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

Если вы закроете терминал, команда не будет завершена.

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

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

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

nohup mycomand &

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

[1] 13265

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

kill -9 13265

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

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

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

nohup mycommand > mycommand.out 2>&1 &

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

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

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

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

Экран Screen или GNU Screen — это программа-мультиплексор терминалов, которая позволяет вам запускать сеанс screen и открывать любое количество окон (виртуальных терминалов) в рамках этого сеанса.

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

Для получения дополнительной информации: Как использовать команду Screen для сеансов в Linux.

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

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

Вывод

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.