- Home »

Команда nohup в Linux — Как сохранить процессы после выхода из системы
В этой статье разберёмся, как не потерять запущенные процессы в Linux после выхода из системы, используя команду nohup. Это не просто лайфхак для тех, кто держит серверы на VPS или выделенных машинах — это must-have инструмент для всех, кто не хочет, чтобы долгие сборки, бэкапы, парсеры или любые другие задачи обрывались из-за банального выхода из SSH. Расскажу, как работает nohup, как его быстро внедрить в свой рабочий процесс, приведу реальные примеры, сравню с альтернативами и дам пару гиковских советов, которые реально экономят время и нервы.
Как работает nohup: простыми словами, но по-взрослому
Когда вы запускаете процесс в Linux через терминал (особенно по SSH), он привязан к вашей сессии. Вышли — процесс получил сигнал SIGHUP (hangup) и завершился. Вот тут и появляется nohup — сокращение от no hangup. Эта утилита запускает вашу команду так, чтобы она игнорировала сигнал SIGHUP, а значит, продолжала работать даже после выхода из системы.
Технически nohup делает следующее:
- Перехватывает сигнал SIGHUP и игнорирует его для дочернего процесса.
- Перенаправляет стандартный вывод (stdout) и ошибки (stderr) в файл
nohup.out
, если вы явно не указали иное. - Позволяет запускать задачи в фоне (через
&
), чтобы не держать терминал занятым.
Это не магия, а грамотная работа с сигналами и потоками ввода-вывода. В итоге — процесс живёт своей жизнью, пока не завершится сам или не будет убит вручную.
Быстрый старт: как настроить и использовать nohup
Всё просто до безобразия, но есть нюансы, которые часто упускают новички (и даже опытные админы, когда спешат).
-
Запуск процесса с nohup
nohup команда &
Пример:
nohup python3 myscript.py &
Всё, можно выходить из SSH — скрипт продолжит работать. -
Проверка работы процесса
ps aux | grep myscript.py
или
jobs -l
-
Просмотр вывода
По умолчанию всё пишется вnohup.out
в текущей директории. Смотреть можно так:
tail -f nohup.out
-
Явное указание файлов вывода
nohup команда > mylog.log 2>&1 &
Так вы не засоряете директорию файломnohup.out
. -
Остановка процесса
kill PID
PID можно узнать черезps
илиjobs -l
.
Практические кейсы: когда и зачем использовать nohup
Кейс | Что будет без nohup | Что будет с nohup | Рекомендация |
---|---|---|---|
Долгая компиляция или сборка (например, make ) |
Вышли из SSH — процесс оборвался, всё зря | Процесс продолжает работать, результат сохраняется | Всегда используйте nohup make ... & |
Бэкап или миграция БД | Оборвался — бэкап не полный, возможна потеря данных | Бэкап завершится корректно, даже если вы отключились | Запускайте через nohup pg_dump ... & |
Парсинг или обработка больших файлов | Сессия упала — процесс потерян, данные не обработаны | Задача завершится, результат можно анализировать | Используйте nohup python3 parser.py & |
Запуск демона или сервиса вручную | Сервис не переживёт разлогин | Сервис продолжит работу | Для тестов — ок, для продакшена лучше systemd |
Положительные и отрицательные примеры
-
Положительный: Запустили
nohup rsync -avz /data /backup &
перед уходом домой — утром бэкап готов, даже если ночью интернет “моргнул”. -
Отрицательный: Запустили
nohup ./myserver &
и забыли про логи — потом долго ищете, почему сервер не стартует (всё ушло вnohup.out
).
Рекомендация: Всегда явно указывайте файлы вывода и ошибок! -
Положительный: Используете
nohup
в скриптах автозапуска — процессы не зависят от вашей сессии, удобно для тестов. -
Отрицательный: Используете
nohup
для постоянных сервисов — после перезагрузки всё пропадает. Лучше использоватьsystemd
илиsupervisord
.
Полезные команды и шаблоны
# Запуск с явным указанием вывода
nohup команда > output.log 2>&1 &
# Проверка процесса
ps aux | grep команда
jobs -l
# Просмотр лога
tail -f output.log
# Остановка процесса
kill PID
# Запуск нескольких процессов
nohup ./script1.sh > log1.log 2>&1 &
nohup ./script2.sh > log2.log 2>&1 &
Альтернативы nohup: что ещё есть?
nohup — это просто и быстро, но не всегда идеально. Вот что ещё можно использовать:
-
screen — полноценный терминальный мультиплексор. Позволяет “отцеплять” и “прицеплять” сессии, запускать кучу процессов, переключаться между ними.
Официальный сайт GNU Screen -
tmux — современный и удобный мультиплексор, любимец DevOps. Можно делить терминал на панели, работать с несколькими сессиями, скриптовать.
Официальная Wiki tmux -
systemd — для запуска сервисов и демонов на сервере. Позволяет управлять автозапуском, рестартами, логами.
Официальная страница systemd -
supervisord — менеджер процессов на Python, хорош для управления несколькими сервисами.
Официальный сайт supervisord
Утилита | Плюсы | Минусы | Когда использовать |
---|---|---|---|
nohup | Просто, быстро, есть везде | Нет управления, нет автозапуска после ребута | Разовые задачи, скрипты, бэкапы |
screen/tmux | Гибко, можно возвращаться к сессии | Нужно привыкнуть, не всегда удобно для автозапуска | Долгие интерактивные задачи, разработка |
systemd | Автозапуск, управление, логи | Сложнее конфигурировать, не для разовых задач | Постоянные сервисы, продакшн |
supervisord | Управление группой процессов, рестарты | Требует установки, не всегда есть по умолчанию | Микросервисы, dev/test окружения |
Интересные факты и нестандартные применения
- nohup + cron: Можно запускать задачи по расписанию, которые не зависят от сессии пользователя.
-
nohup в Docker-контейнерах: Иногда используют для запуска фоновых задач внутри контейнера, если не хочется городить
supervisord
. -
nohup для обхода ограничений хостинга: На некоторых шаред-хостингах
screen
иtmux
запрещены, а вотnohup
работает. - nohup в скриптах автодеплоя: Позволяет запускать миграции или сборки, не опасаясь разрыва соединения.
Автоматизация и скрипты: новые возможности
Использование nohup в автоматизации — это быстрый способ запускать задачи, которые не должны зависеть от вашей сессии. Например:
- Автоматические бэкапы по расписанию (cron + nohup)
- Запуск CI/CD скриптов, которые могут длиться часами
- Параллельная обработка больших данных (несколько
nohup
процессов) - Тестирование новых сервисов без прописывания unit-файлов для systemd
В скриптах удобно использовать конструкции вроде:
nohup ./long_task.sh > /var/log/long_task.log 2>&1 &
— и не париться, что что-то оборвётся.
Статистика и сравнение: почему nohup до сих пор актуален
- По данным Stack Overflow, nohup входит в топ-10 команд, которые ищут админы для работы с процессами.
- На большинстве дистрибутивов Linux nohup установлен по умолчанию, в отличие от
screen
илиtmux
. - В 90% случаев для разовых задач nohup быстрее и проще, чем писать unit-файл для
systemd
.
Выводы и рекомендации
nohup — это тот самый “швейцарский нож” для запуска процессов в Linux, который должен быть в арсенале каждого, кто работает с серверами. Он прост, надёжен и не требует лишних телодвижений. Если вам нужно быстро запустить задачу, которая должна дожить до конца независимо от вашей сессии — nohup ваш выбор.
- Для разовых задач, бэкапов, миграций, парсинга — используйте nohup.
- Для постоянных сервисов и демонов — переходите на systemd или supervisord.
- Для интерактивной работы — попробуйте screen или tmux.
- Всегда явно указывайте файлы вывода и ошибок, чтобы не потерять логи.
Если вы только начинаете работать с VPS или выделенными серверами — попробуйте VPS или выделенный сервер для практики. А nohup поможет не терять время и нервы при запуске долгих задач.
Официальная документация по nohup: man nohup
Пусть ваши процессы никогда не падают!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.