Команды Linux: как работает nohup

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

Nohup — это сокращение от no hangup. Эта команда поддерживает в системах Linux работу процессов даже после выхода из оболочки или терминала. Она предотвращает получение процессами или заданиями сигнала SIGHUP (Signal Hang UP). Это сигнал, который отправляется процессу при закрытии или выходе из терминала. В этом руководстве мы рассмотрим команду nohup и покажем, как ее можно использовать.

Синтаксис команды nohup

Синтаксис команды выглядит следующим образом:

nohup command arguments

Или так: 

nohup options

Давайте же посмотрим, как работает данная команда.

Проверка версии nohup

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

nohup --version

Запуск процесса с помощью Nohup

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

nohup ./hello.sh 

Согласно приведенному выше выводу результат команды был сохранен в nohup.out. Чтобы убедиться в этом, запустите: 

cat nohup.out

Кроме того, вы можете перенаправить вывод в другой файл, как показано ниже.

nohup ./hello.sh > output.txt

Чтобы просмотреть этот файл, введите: 

cat output.txt

Чтобы перенаправить в файл и стандартную ошибку, и вывод, используйте атрибут > filename 2>&1, как показано ниже.

nohup ./hello.sh > myoutput.txt >2&1 

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

Чтобы запустить процесс в фоновом режиме, используйте символ & в конце команды. В этом примере мы пингуем google.com и отправляем этот процесс в фоновый режим.

nohup ping google.com &

Чтобы проверить процесс при возобновлении работы оболочки, используйте команду pgrep, как показано ниже.

pgrep -a ping

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

kill 2565

Заключение 

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

Как только задание запущено с помощью команды nohup, стандартный ввод будет недоступен для пользователя.

По умолчанию nohup.out используется как стандартный файл для stdout и stderr.

Читайте также: Использование команды Fuser в Linux

Tags:

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