nohup Linux


Рассмотрим ситуацию при которой необходимо скачать очень объемный файл при помощи wget и использование nohup Linux утилиты, позволяющей продолжать процесс в фоне.



Процесс может длиться несколько часов.

wget http://example.com/some-large-package.iso



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



Решением будет передача вывода в файл или в устройство /dev/null (для этого нужно добавить > /dev/null)



nohup Linux и выполнение длительных операции


Можно использовать nohup, утилита по умолчанию пишет вывод в файл, процесс не прервется при отсоединении от терминала (в случае если пользователь выполнит log out и выйдет из системы)



Та жа команда с использованием nohup

nohup wget http://example.com/some-large-package.iso &



Подключившись из другой сессии можно убедиться в том, что процесс все еще выполняется

ps aux | grep wget



Пример процесса запущенного через nohup:

nohup linux


В примере запущено скачивание объемного ISO образа дистрибутива Ubuntu.

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

killall wget



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

nohup удобнее на сервере, с которым работает один человек или на рабочей станции.

Сказать спасибо