Фоновые процессы в Linux¶
Фоновые процессы в Linux — это процессы, выполняющиеся в операционной системе без непосредственного взаимодействия с пользователем через терминал. Они запускаются либо самой системой (демоны, системные службы), либо пользователем, который переводит запущенную программу в фоновый режим. В отличие от процессов переднего плана (foreground), фоновые процессы не занимают ввод с клавиатуры и не выводят данные на экран терминала, что позволяет пользователю продолжать работу в командной оболочке.
¶Управление фоновыми процессами
В командной оболочке Bash и других POSIX-совместимых оболочках управление задачами (job control) реализовано через несколько основных механизмов.
¶Запуск в фоне
Для запуска команды в фоновом режиме в конце строки добавляется символ амперсанда (&). Например:
``bash sleep 100 & ``
После запуска оболочка выводит номер задачи (job number) в квадратных скобках и идентификатор процесса (PID). Задача продолжает выполняться, а пользователь получает управление терминалом обратно.
¶Команды управления заданиями
jobs— выводит список текущих задач с их статусами (Running, Stopped) и номерами.fg %n— переводит задачу с номеромnна передний план.bg %n— возобновляет выполнение остановленной задачи в фоновом режиме.kill %n— отправляет сигнал задаче (по умолчанию SIGTERM).
Для приостановки выполняющейся на переднем плане программы используется комбинация клавиш Ctrl+Z, которая отправляет сигнал SIGTSTP.
¶Перенаправление ввода-вывода
Фоновый процесс, запущенный без перенаправления, продолжает выводить данные в терминал, что может мешать работе. Рекомендуется перенаправлять стандартный вывод и ошибки в файл или /dev/null:
``bash ./long_script.sh > output.log 2>&1 & ``
¶Демоны
Особым классом фоновых процессов являются демоны (daemons) — процессы, запускаемые системой и работающие в течение длительного времени. Они выполняют служебные функции: обслуживание сетевых запросов (sshd, nginx), ведение журналов (syslogd), планирование задач (cron) и другие.
Ключевые признаки демона:
- Отсутствие управляющего терминала (TTY).
- Родительским процессом является init (PID 1) или systemd.
- Запускаются при загрузке системы через систему инициализации.
Традиционно демоны создаются путём двойной форкизации (fork), что приводит к осиротению процесса и его отсоединению от терминала. В современных системах с systemd демоны запускаются непосредственно менеджером служб.
¶Сессии и группы процессов
Фоновые процессы организованы в сессии и группы процессов. Сессия объединяет процессы, связанные с одним терминалом. Группа процессов — набор процессов, которым можно отправлять сигналы как единому целому. Управление заданиями в оболочке основано на этих механизмах.
¶Просмотр фоновых процессов
Для мониторинга фоновых процессов используются стандартные утилиты:
ps— показывает состояние процессов с указанием PID, TTY, состояния и команды. Например,ps auxвыводит все процессы системы.top/htop— интерактивные мониторы, отображающие нагрузку на процессор и память в реальном времени.pgrep— поиск процессов по имени или другим критериям.pkill— отправка сигналов процессам по имени.
¶Особенности завершения
При выходе из оболочки фоновые процессы обычно получают сигнал SIGHUP (hang up) и завершаются. Чтобы предотвратить это, используется команда nohup или запуск через setsid. В системах с systemd для этой цели применяются пользовательские службы (user units).
¶Применение
Фоновые процессы широко используются в администрировании и разработке:
- запуск длительных операций (резервное копирование, компиляция) без блокировки терминала;
- работа веб-серверов и баз данных;
- выполнение периодических задач через cron;
- запуск приложений с графическим интерфейсом из терминала без привязки к нему.
В целом, механизм фоновых процессов является фундаментальной частью многозадачности в Linux, обеспечивая гибкое управление выполнением программ в командной строке.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

