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%.