TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2724 1.6K
Управление процессами в Linux
(продолжение предыдущего поста)

1. Введение

→ Процесс — это экземпляр запущенной программы в Linux.
→ Каждый процесс имеет собственное пространство памяти, контекст выполнения и системные ресурсы.
→ Управление процессами включает создание, планирование, мониторинг и завершение процессов.

2. Жизненный цикл процесса

→ Типичный жизненный цикл процесса включает:
 → Создание — инициируется другим процессом (обычно оболочкой).
 → Выполнение — процесс работает и выполняет задачи.
 → Ожидание — процесс может ожидать ресурсы или события.
 → Завершение — процесс завершается или принудительно останавливается.

→ Ядро управляет всеми переходами между этими состояниями.

3. Типы процессов

→ Процесс переднего плана:
 → Работает в интерактивном режиме и занимает терминал.
 → Пример: vim file.txt

→ Процесс фонового режима:
 → Работает без взаимодействия с терминалом.
 → Пример: ./script.sh &

→ Демон‑процесс:
 → Постоянно работает в фоновом режиме, предоставляя сервисы.
 → Примеры: sshd, cron, systemd.

4. Идентификация процессов

→ Каждый процесс идентифицируется PID (идентификатором процесса).
→ PPID (идентификатор родительского процесса) указывает на процесс, который его создал.
→ Процесс init/systemd — предок всех процессов, всегда имеет PID 1.

→ Для просмотра идентификаторов процессов:
 → ps
 → top
 → pgrep process_name

5. Создание процессов

→ В Linux для создания новых процессов используются системные вызовы fork() и exec().

→ fork()
 → Создаёт дубликат текущего процесса.
 → У дочернего процесса присваивается уникальный PID.

→ exec()
 → Заменяет память текущего процесса новой программой.
 → Используется для запуска новых исполняемых файлов.

→ Вместе fork() и exec() составляют основу создания процессов в Linux.

6. Состояния процессов

→ Процессы в Linux могут находиться в нескольких состояниях:
 → R (Running): Выполняется или готов к выполнению.
 → S (Sleeping): Ожидает события или ресурса.
 → D (Uninterruptible Sleep): Ожидает операций ввода‑вывода.
 → T (Stopped): Приостановлен сигналом.
 → Z (Zombie): Завершил выполнение, но ожидает подтверждения от родительского процесса.

→ Используйте ps -aux для просмотра состояний процессов.

7. Планирование процессов

→ Планировщик Linux решает, какой процесс будет выполняться следующим на CPU.
→ Используются алгоритмы планирования, такие как CFS (Completely Fair Scheduler).
→ Приоритеты определяются значениями nice в диапазоне от −20 (наивысший) до +19 (наинизший).

→ Команды:
 → nice -n 10 process_name — запустить процесс с пониженным приоритетом.
 → renice -n -5 PID — изменить приоритет запущенного процесса.

8. Мониторинг процессов

→ Команды для мониторинга активных процессов:
 → ps — снимок запущенных процессов.
 → top — отображение процессов в реальном времени.
 → htop — расширенная интерактивная версия top.
 → pidof — найти PID процесса.
 → pstree — просмотреть иерархию процессов.

9. Управление процессами

→ Управление запущенными процессами с помощью команд оболочки:
 → & — запустить процесс в фоновом режиме.
 → Ctrl + Z — приостановить процесс.
 → bg — возобновить процесс в фоновом режиме.
 → fg — вывести процесс на передний план.
 → kill PID — завершить процесс.
 → kill -9 PID — принудительно завершить процесс.

10. Зомби‑процессы и осиротевшие процессы

→ Зомби‑процесс:
 → Процесс завершил работу, но родительский процесс не прочитал его статус завершения.
 → Существует как запись в таблице процессов.

→ Осиротевший процесс:
 → Родительский процесс завершился до дочернего.
 → Автоматически принимается init/systemd.

→ Оба типа можно отслеживать и управлять ими с помощью ps или top.

11. Демоны и сервисы

→ Демоны — это специальные фоновые процессы, управляемые systemd.
→ Конфигурационные файлы хранятся в /etc/systemd/system/.
→ Команды:
 → systemctl start service_name
 → systemctl stop service_name
 → systemctl status service_name
 → systemctl enable service_name

12. Межпроцессное взаимодействие (IPC)
  • ❤ 8
  • 👍 4
  • ❤‍🔥 3
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →