Рассмотрим ситуацию при которой необходимо скачать очень объемный файл при помощи 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:
В примере запущено скачивание объемного ISO образа дистрибутива Ubuntu.
Контроля над процессом, тем не менее, нет. Можно только дождаться его завершения или принудительно прекратить его выполнение с помощью утилиты kill:
killall wget
Значительно шире, чем nohup применяется утилита screen. Она позволяет в любое время подключиться к сессии после выхода из нее и продолжить работу. При этом можно использовать ту же машину или другую.
nohup удобнее на сервере, с которым работает один человек или на рабочей станции.