Как запустить программу в скрытом режиме linux

Часто бывает ситуация, когда нужно запустить какую-либо программу в терминале на длительное время (например, стресс тест сервера), если программу просто запустить в терминале, то после закрытия терминальной сессии запущенная программа также прекращает работать. Для того что бы программа продолжада работать после закрытия терминальной сессии, нужно ее запустить с помощью утелиты nohup

Программа nohup запускает COMMAND таким образом, что она игнорирует сигнал hangup, что позволяет ей продолжать работу и после выхода из терминала. Также, она перенаправляет весь вывод программы в файл $HOME/nohup.out и понижает приоритет выполняемой программы.

Похожие записи:

  1. VestaCP установка и настройка
  2. Настройка сети в Linux – команда ifconfig
  3. Утилита wget в Linux
  4. Перенаправление потоков в Linux. Вывод команды в файл

Понравилась статья? Поделиться с друзьями:

Источник: itproffi.ru

Использование и настройка утилиты screen

Команда Nohup в Linux позволяет запускать команды даже после выхода из системы

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

Nohup означает «no hang up». Это чрезвычайно полезная команда для запуска процесса даже после выхода из системы.

Одно из наиболее распространенных применений можно найти в выполнении команд, требующих времени, через соединение SSH. Если вы считаете, что ваш SSH-сеанс может прерваться, вы можете использовать команду с nohup следующим образом:

Читайте также:
Изготовление одного или более экземпляров программы для эвм

Что такое команда nohup?

Nohup можно рассматривать как обертку. Префикс вашей команды с nohup:

nohup COMMAND ARGS .

Цель Nohup в том чтобы перехватить и предотвратить SIGHUP сигналы от достижения команды.

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

nohup COMMANDS >/path/to/output/file

О nohup говорить особо нечего, у него нет длинного списка опций. Есть только –help и –version.

Пример использования команды Nohup

Выполнение скрипта с помощью nohup так же просто, как это.

nohup ./nhp.sh

Команда Nohup в Linux позволяет запускать команды даже после выхода из системы
Обратите внимание, что nohup не развил процесс в фоновом режиме. Nohup предназначен только для перехвата сигналов SIGHUP. После запуска команды вы можете продолжить и закрыть свой терминал. Он предупредит вас, что процесс запущен. Подтвердите, что хотите убить его.
Команда Nohup в Linux позволяет запускать команды даже после выхода из системы

Linux — запуск процессов в фоновом режиме | UnixHost


Когда вы закрыли свой терминал, все дочерние процессы получили сигнал SIGHUP. Nohup помешал этому сигналу достичь нашей команды. На следующем рисунке показана информация о нашей команде, пока терминал еще работал.
Команда Nohup в Linux позволяет запускать команды даже после выхода из системы


Вы видите PPID? Это идентификатор родительского процесса. Когда вы запросили закрыть терминал, все дочерние элементы PPID получили сигнал SIGHUP. Nohup не дал этому сигналу дойти до нашего сценария. Родительский процесс завершен, и наш сценарий осиротел.

Когда процесс становится осиротевшим, он автоматически получает 1 (systemd или init) в качестве родителя.
Команда Nohup в Linux позволяет запускать команды даже после выхода из системы
Как видите, продемонстрировать использование nohup не сложно. Очень простая команда. Вы можете разветвлять процесс в фоновом режиме следующим образом:

nohup ./nhp.sh /path/to/file

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

Читайте также:
Оценка качества освоения программы это

Эту проблему часто можно решить, перенаправив все 3 потока данных.

nohup COMMAND >./nohup.out 2>./nohup.err

Команда nohup в Linux

Команда 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.out . Этот файл создается в текущем рабочем каталоге . Если пользователь, выполняющий команду, не имеет прав на запись в рабочий каталог, файл создается в домашнем каталоге пользователя.

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

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

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

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

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

[1] 25177

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

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

kill -9 25132

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

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

Читайте также:
С помощью какой программы можно скачивать видео с ютуба на компьютер

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

nohup mycommand > mycommand.out 2>

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

nohup mycommand > mycommand.out 2> mycommand.err https://routerus.com/linux-nohup-command/» target=»_blank»]routerus.com[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru