Linux

5.1 Что такое процесс

Процесс — это выполняющаяся программа в памяти компьютера. Каждая запущенная программа создает один или несколько процессов.

Основные характеристики процесса

PID (Process ID)

Уникальный числовой идентификатор процесса в системе

PPID (Parent Process ID)

Идентификатор родительского процесса, который создал данный процесс

Состояние процесса

  • R (Running) — выполняется
  • S (Sleeping) — ожидает события
  • D (Uninterruptible) — ожидает ввода/вывода
  • Z (Zombie) — завершен, но не удален
  • T (Stopped) — остановлен

Иерархия процессов

Все процессы в Linux образуют дерево. Корневой процесс — init (PID 1), который создается при загрузке системы.

# Просмотр дерева процессов
pstree
# или
ps auxf
Системные процессы работают в фоновом режиме и обеспечивают функционирование операционной системы. Пользовательские процессы выполняют задачи пользователя.

5.2 Просмотр процессов

В Linux есть несколько команд для просмотра информации о процессах.

ps — список процессов

ps                    # процессы текущего пользователя
ps aux                # все процессы с подробной информацией
ps -ef                # все процессы в формате BSD
ps aux | grep firefox # найти процессы firefox

Расшифровка вывода ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  78008  9004 ?        Ss   Dec15   0:01 /sbin/init
user      1234  2.5  1.2 123456 45678 pts/0    R+   10:30   0:05 firefox
# ↑      ↑    ↑    ↑     ↑     ↑      ↑        ↑     ↑       ↑     ↑
# |      |    |    |     |     |      |        |     |       |     └─ команда
# |      |    |    |     |     |      |        |     |       └─────── время CPU
# |      |    |    |     |     |      |        |     └─────────────── время запуска
# |      |    |    |     |     |      |        └───────────────────── состояние
# |      |    |    |     |     |      └─────────────────────────────── терминал
# |      |    |    |     |     └─────────────────────────────────────── физическая память
# |      |    |    |     └─────────────────────────────────────────────── виртуальная память
# |      |    |    └───────────────────────────────────────────────────── % памяти
# |      |    └─────────────────────────────────────────────────────────── % CPU
# |      └───────────────────────────────────────────────────────────────── PID
# └───────────────────────────────────────────────────────────────────────── пользователь

top — интерактивный монитор процессов

top                   # запустить top
# Управление:
# q - выход
# k - завершить процесс
# r - изменить приоритет
# h - помощь

htop — улучшенный top

htop                  # запустить htop (если установлен)
# Более удобный интерфейс с цветовой подсветкой
Установка htop: sudo apt install htop (Ubuntu/Debian) или sudo yum install htop (CentOS/RHEL)

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

Управление процессами включает запуск, остановку, приостановку и завершение процессов.

Запуск процессов в фоне

command &             # запустить команду в фоне
nohup command &       # запустить команду в фоне, игнорируя SIGHUP
command > output.log 2>&1 &  # запустить с перенаправлением вывода

Управление фоновыми задачами

jobs                  # показать фоновые задачи
fg %1                 # вернуть задачу 1 на передний план
bg %1                 # продолжить задачу 1 в фоне
fg                    # вернуть последнюю задачу на передний план

Завершение процессов

kill PID              # отправить SIGTERM (мягкое завершение)
kill -9 PID           # отправить SIGKILL (принудительное завершение)
killall firefox       # завершить все процессы firefox
pkill -f "python"     # завершить процессы по имени команды

Сигналы процессов

Основные сигналы

  • SIGTERM (15) — запрос на завершение
  • SIGKILL (9) — принудительное завершение
  • SIGSTOP (19) — приостановка
  • SIGCONT (18) — продолжение
  • SIGHUP (1) — перезагрузка конфигурации
Осторожно с SIGKILL! Этот сигнал нельзя перехватить, процесс завершится немедленно без сохранения данных.

5.4 Мониторинг системы

Мониторинг ресурсов системы помогает понять, как работает Linux и где могут быть проблемы.

free — информация о памяти

free                  # показать использование памяти
free -h               # в удобном формате
free -m               # в мегабайтах
free -s 5             # обновлять каждые 5 секунд

df — использование дискового пространства

df                   # использование дисков
df -h                # в удобном формате
df -T                # с типами файловых систем
du -sh /home         # размер каталога /home

uptime — время работы системы

uptime               # время работы и нагрузка
# Вывод: 10:30:45 up 2 days, 3:15, 2 users, load average: 0.52, 0.58, 0.59
#        ↑           ↑        ↑        ↑              ↑
#        время      время    количество  средняя нагрузка
#        запуска    работы   пользователей (1, 5, 15 мин)

iostat — статистика ввода/вывода

iostat               # статистика I/O (если установлен)
iostat -x 2          # каждые 2 секунды

Полезные команды мониторинга

vmstat 1             # статистика виртуальной памяти
sar -u 1 10          # статистика CPU (если установлен)
lscpu                # информация о процессоре
lsblk                # информация о блочных устройствах
Нагрузка системы показывает среднее количество процессов, ожидающих выполнения. Значение 1.0 означает, что система загружена на 100%.

Настройки

Цветовая схема

Тема