Полное руководство по команде nohup — как запускать процессы в Linux, которые не умирают после закрытия терминала
No Hang Up • POSIX Signal • Background Process
Команда, которая спасает ваши процессы от смерти при закрытии терминала
nohup (no hang up) — утилита POSIX, которая запускает команду, игнорируя сигнал SIGHUP.
Когда вы закрываете терминал, все дочерние процессы получают сигнал SIGHUP (signal 1) и завершаются. Nohup предотвращает это.
Автоматически перенаправляет вывод в файл nohup.out, чтобы процесс не блокировался при отсутствии терминала.
Ключевые параметры команды nohup
Как часто используются различные варианты nohup на практике
Ключевые аспекты работы nohup в процентах
Пошаговый процесс запуска команды
Пользователь вводит команду
Сигнал hangup игнорируется
Вывод перенаправляется в файл
Ошибки тоже в файл
Терминал закрывается
Процесс продолжает работу!
6 ключевых преимуществ для системных администраторов и разработчиков
Процесс не получает сигнал hangup при закрытии терминала — продолжает работать
Весь вывод сохраняется в nohup.out — легко отслеживать прогресс и ошибки
Идеален для бэкапов, компиляций, миграций БД — задач, которые длятся часами
Запустили на сервере, отключились от SSH — процесс продолжает работать
Одна команда, никаких настроек. Работает на любом Unix-подобном系统 из коробки
Работает с любой командой: скрипты, бинарники, Python, Node.js — что угодно
Развенчиваем популярные заблуждения о nohup
Нет — только от SIGHUP. SIGKILL (9) и SIGTERM (15) всё ещё убьют процесс
Nohup устанавливает disposition SIGHUP в SIG_IGN. Остальные сигналы работают как обычно
Нет — nohup не отправляет процесс в фон. Нужно добавить & для фона
nohup защищает от SIGHUP, а & отправляет в фон. Вместе — полноценный background
Нет — это разные инструменты. nohup для «запустил и забыл», tmux — для интерактива
nohup — fire-and-forget. tmux/screen — сессии с возвратом. disown — если уже запустили
Сравнение способов запуска фоновых процессов
| Функция | nohup | disown | tmux | screen |
|---|---|---|---|---|
| Защита от SIGHUP | ✅ Да | ✅ Да | ✅ Да | ✅ Да |
| Интерактивность | ❌ Нет | ❌ Нет | ✅ Да | ✅ Да |
| Повторное подключение | ❌ Нет | ❌ Нет | ✅ Да | ✅ Да |
| Простота | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Логирование | nohup.out | Нет | В сессии | В сессии |
| Установка | Встроен | Bash builtin | Установка | Установка |
| Лучший для | Fire & forget | Уже запущен | Dev-сессии | Legacy сессии |
Путь от первых Unix до современных серверов
Первые Unix-системы. Концепция сигналов ещё не сформирована, но идея «не прерывать при отключении» уже существует
Nohup появляется как отдельная утилита. Сигналы POSIX формализованы. SIGHUP = signal 1
Nohup стандартизирован в POSIX.1-1990. Поведение определено: игнорировать SIGHUP, перенаправить вывод
Nohup входит в GNU coreutils. Становится доступен на каждом Linux-дистрибутиве по умолчанию
Эра облачных серверов. Nohup + & — стандартный способ запуска долгих задач на VPS и VDS
Несмотря на systemd и контейнеры, nohup остаётся актуальным для быстрых задач на серверах
Nohup — это минималистичный, надёжный и POSIX-совместимый способ запустить процесс, который переживёт закрытие терминала. Не заменяет tmux или systemd, но идеален для «запустил и забыл».
— man nohup, POSIX.1-2017Процесс запущен • SIGHUP проигнорирован • nohup.out пишет логи
Инфографика Qwen Code • Вдохновение StrapmanLab • 2026