Команда Linux Nohup

Команда Linux Nohup

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

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

Как использовать команду 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 или GNU Screen — это программа-мультиплексор терминала, позволяющая запускать сеанс Screen и открывать в нём любое количество окон (виртуальных терминалов). Процессы, запущенные в Screen, продолжат работу, даже если их окна не видны, даже если соединение прервётся.

Тмукс

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

Отказаться

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

Заключение

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

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

терминал nohup

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *