Как запустить команды Linux в фоновом режиме
Кратко: Вы узнаете шесть надёжных способов запустить процесс в фоновом режиме: & (амперсанд), bg/fg, nohup, перенаправления, disown и tmux. В конце — советы по выбору метода, устранению проблем и чек-листы для разных ролей.

Команды Linux позволяют взаимодействовать с системой через терминал. Иногда задача занимает много времени, и ждать неудобно — либо вы блокируете сессию, либо открываете новую оболочку. К счастью, есть проверенные приёмы, чтобы запустить команды в фоне и освободить терминал, не теряя выполнения задачи.
Что значит «запустить в фоне» — одно предложение
Запуск в фоне означает, что процесс выполняется независимо от активной оболочки: вы получаете обратно приглашение терминала и можете продолжать работу.
Быстрый обзор методов
- & — самый простой способ: оболочка запустит процесс в фоне.
- Ctrl+Z + bg/fg — отправляет уже запущенный процесс в фон и возвращает его в передний план при необходимости.
- nohup — делает процесс устойчивым к закрытию оболочки (SIGHUP).
- Перенаправление вывода + & — удобно, когда нужно сохранять логи в файл или отбрасывать вывод.
- disown — отделяет задачу от текущей оболочки (не будут посылаться SIGHUP).
- tmux/screen — терминальные мультиплексоры для долгоживущих сессий.
1. Добавьте амперсанд (&) после команды
Проще всего запустить процесс в фоне — добавить символ & в конце команды. Это говорит Bash: запусти процесс в фоне и верни контроль пользователю.
gedit &Аналогично для скрипта:
./script.sh &Когда использовать: короткие фоновые задачи, интерактивные GUI-программы и быстрые фоновые запускa.
Важно: если вы закроете оболочку, большинство процессов, запущенных только с &, получат сигнал SIGHUP и будут завершены.
2. Используйте Ctrl+Z и bg, чтобы отправить уже запущенную команду в фон
Если команда уже выполняется и вы поняли, что хотите освободить терминал, нажмите Ctrl+Z — это приостановит процесс (SIGTSTP). Затем выполните:
bgчтобы возобновить её в фоновом режиме.
Просмотреть фоновые задания:
jobsВернуть задание на передний план:
fg # последний фон
fg %2 # задание с ID 2Завершить фоновое задание по номеру:
kill %2Когда использовать: интерактивная работа, где вы случайно запустили длительную задачу и хотите временно освободить терминал.
3. nohup — фон, устойчивый к выходу из оболочки
Команда nohup предотвращает завершение процесса при закрытии терминала (игнорирует SIGHUP). Пример использования:
nohup sudo nmap -sS --top-ports=15 192.168.1.1/24 &nohup по умолчанию пишет вывод в файл nohup.out в текущей директории или в $HOME, если прав нет.
Советы:
- Явно перенаправляйте stdout и stderr, чтобы лог был аккуратным:
nohup mycmd >mylog 2>&1 &. - nohup не решает проблемы с терминальными зависимостями (например, если программа требует tty).
Когда использовать: удалённые сессии (SSH), долгие задачи, которые должны продолжаться после выхода.
4. Системные перенаправления вывода + &
Часто нужно сохранить вывод в файл или полностью отбросить. Пример для ping:
ping -c5 8.8.8.8 > output.log 2>&1 &Здесь stdout переадресован в output.log, stderr (2) перенаправлен на stdout (&1), и & отправляет процесс в фон.
Если вы хотите отбросить вывод полностью, используйте /dev/null:
my_heavy_job > /dev/null 2>&1 &Когда использовать: автоматизация, cron-подобные задачи, сбор логов фоновых задач.
5. disown — отсоединить процесс от оболочки
Если вы запустили процесс с & и хотите, чтобы он пережил выход из оболочки, можно выполнить:
gedit &
disowndisown удаляет задание из таблицы задач текущей оболочки, так что при выходе процесс не получит SIGHUP.
Замечание: disown не создаёт логов; если вы хотите видеть вывод, следует заранее перенаправить stdout/stderr.
6. Используйте tmux (или screen) для долгоживущих сессий
tmux — это терминальный мультиплексор. Он позволяет запускать процессы в «сессиях», которые продолжают выполняться, даже если вы отсоединитесь.
tmux new -d 'ping -c 10 8.8.8.8 > output.log'Команда выше создаёт новую tmux-сессию в фоне и запускает ping. Вы можете потом подключиться к сессии:
tmux attach -t session_nameКогда использовать: интерактивные долгие процессы, отладки на удалённой машине, восстановление сеанса после отключения сети.
Когда какой метод выбрать — краткое руководство
- Нужен простой быстрый фон — используйте &.
- Уже запустили процесс — Ctrl+Z → bg.
- Должно продолжаться после выхода — nohup или disown, либо tmux/screen.
- Нужны логи — перенаправляйте stdout/stderr в файл.
- Требуется управляемая, перезапускаемая служба — рассмотрите systemd-сервис.
Примеры альтернатив и продвинутые подходы
- systemd user-сервисы для контроля автозапуска, логирования (journald) и восстановления на сбое.
- setsid — запускает процесс в новой сессии:
setsid mycmd &. - cron @reboot для задач, которые нужно запускать после старта системы.
Ментальные модели и эвристики
- «Жизненный цикл процесса»: запуск → фон/передний план → завершение. Поймите, что произойдёт при закрытии оболочки (SIGHUP).
- «Вывод и следы»: если нужен анализ, заранее перенаправьте stdout/stderr в файл.
- «Управление и наблюдаемость»: для продакшна используйте systemd или контейнеры, а не ad‑hoc nohup.
Опасности и крайние случаи
- Zombie-процессы: если потомок завершился, а родитель не прочитал статус, появится зомби. Удаляются вызовом wait в родительском процессе или kill родителя.
- Ресурсные утечки: фоновые процессы могут потреблять CPU, память и I/O — мониторьте их.
- Зависимости от tty: некоторые программы требуют терминала; nohup не даёт псевдо-tty. Используйте tmux/screen или
nohupвместе с перенаправлением ввода/вывода.
Важно: не оставляйте фоновые процессы без логирования и мониторинга в продуктивной среде.
Чек-листы по ролям
Для системного администратора
- Выбрать метод: systemd, tmux или nohup?
- Настроить логирование (файлы или journald).
- Ограничить ресурсы (cgroups/systemd ResourceControl).
- Добавить мониторинг и алерты.
Для разработчика
- Записать stdout/stderr в файл.
- Убедиться, что программа корректно обрабатывает сигнал SIGHUP.
- Тестировать поведение при отключении SSH.
Для автоматизации (CI/CD)
- Использовать systemd unit или container для стабильности.
- Обновлять конфигурацию развертывания и rollback-план.
SOP: запустить долгий процесс безопасно (минимум шагов)
- Оцените: нужен ли фон только на время сессии или после выхода — выбирайте &/bg или nohup/disown/tmux.
- Подготовьте лог:
> /var/log/myjob.log 2>&1или другой файл с ротацией. - Запустите команду:
nohup mycmd > /var/log/myjob.log 2>&1 &илиtmux new -d 'mycmd > /var/log/myjob.log'. - Зафиксируйте PID и добавьте проверку статуса.
- Настройте мониторинг и ротацию логов.
Отладка и удаление «зависших» фоновых процессов
- Посмотреть процессы:
ps aux | grep mycmd. - Убить процесс:
kill PIDилиkill -9 PIDтолько если нужно. - Найти зомби:
ps aux | grep Z.
Критерии приёмки
- Процесс продолжает работать после выхода из SSH (если это требовалось).
- Логи доступны и обновляются.
- Ресурсы не превышают установленные лимиты.
- Повторный запуск/стоп возможен без вмешательства оператора.
Небольшая таблица выбора (эмпирическая эвристика)
- Кратковременный, не важный → &: просто и быстро.
- Долгий, должен пережить logout → nohup/disown или tmux.
- Нужен контроль, перезапуск и логирование → systemd.
Рисковая матрица и способы снижения рисков
- Потеря логов → всегда перенаправляйте вывод в файлы или используйте journald.
- Перегрузка системы → лимитируйте ресурсы через cgroups или systemd.
- Неправильное завершение → тестируйте реакции процессов на SIGTERM/SIGHUP.
Пример принятого рабочего процесса
- Для одноразовой фоновой команды:
myjob > ~/logs/myjob.log 2>&1 &. - Для долгоживущей службы: создать systemd unit с Restart=on-failure и логированием в journald.
- Для интерактивной отладки:
tmux new -s debugи запуск внутри сессии.
Decision tree
flowchart TD
A[Нужно ли, чтобы процесс продолжался после выхода?] -->|Нет| B[Использовать & или bg]
A -->|Да| C{Требуется интерактивность?}
C -->|Да| D[Использовать tmux/screen]
C -->|Нет| E{Нужно логирование и рестарт?}
E -->|Да| F[Создать systemd unit]
E -->|Нет| G[Использовать nohup или disown с перенаправлением]Краткая сводка
- & и bg — быстрые способы для интерактивного использования.
- nohup и disown защищают от SIGHUP, но не дают tty.
- tmux/screen — лучший выбор для интерактивных долгих задач и восстановления сессий.
- Для продакшн‑задач предпочитайте systemd: лучше управление, логирование и восстановление.
Если оставить программы в фоне надолго, они могут стать зомби или вызвать утечки ресурсов — периодически проверяйте фоновые процессы и логи.
Итог
Используйте амперсанд и bg для быстрого освобождения терминала. Для надёжного выполнения после выхода — nohup/disown или tmux. Для производства и автоматизации — systemd. Всегда логируйте и контролируйте ресурсы.
Похожие материалы
Как скрывать спойлеры в Telegram — Desktop и Mobile
Найти музыку для Reels в Instagram
Установка .deb на Ubuntu 16.04 без GNOME Software
Кастомные эмодзи в Discord — добавление и управление
Todoist для фитнеса: план, трекинг и привычки