Основы процессов
Как в Linux уникально идентифицируется процесс? С помощью PID (идентификатор процесса), который не повторяется в один момент времени.
Что такое процесс init? init — первый процесс, который запускает ядро. Он отвечает за инициализацию системы (службы, модули и пр.). В современных дистрибутивах его заменяет systemd.
Какие системные вызовы происходят при запуске команды (например,
ls
) в bash?- Bash выполняет fork — создаёт новый процесс.
- В дочернем процессе выполняется exec — замена его на новую программу (
ls
). - Команда запускается и выполняется.
Как работает терминал (кратко)? Терминал ждёт ввода пользователя, форкается для запуска команды и ждёт завершения процесса. После этого возвращается к ожиданию команд.
Команды для работы с процессами
Как посмотреть свои текущие процессы?
ps u
Как увидеть все процессы на хосте?
ps aux
(BSD-стиль)ps -ef
(POSIX-стиль)
Как посмотреть процессы в виде дерева?
pstree
Современные фишки:
ps --sort=-%mem
— сортировка процессов по использованию памятиps --sort=-%cpu
— сортировка по CPUpgrep <pattern>
— быстро найти PID по шаблону
Фоновые и приоритетные процессы
Как запустить процесс в фоне? В конце команды добавить
&
somecommand &
Как увидеть свои фоновые задачи (jobs)?
jobs
Как вернуть задачу №1 на передний план?
fg %1
Как приостановить процесс без завершения?
- Нажать
Ctrl + Z
(SIGTSTP)
- Нажать
Как продолжить выполнение процесса в фоне?
bg %1
Как отправить SIGINT (прервать, остановить) процесс на переднем плане?
- Нажать
Ctrl + C
- Нажать
Современные фишки:
disown
— убрать задачу из контроля шелла (полезно, если закрываешь терминал)jobs -l
— показать PID для каждого job
Сигналы и процессы
Что такое сигналы? Сигналы — это “софтверные прерывания”, которые используются для коммуникации между процессами: остановка, перезапуск, завершение и т.д.
Как корректно завершить процесс?
- Отправить SIGTERM (
kill -15 PID
или простоkill PID
)
- Отправить SIGTERM (
Как “жёстко” завершить процесс?
- Отправить SIGKILL (
kill -9 PID
)
- Отправить SIGKILL (
Что произойдёт, если закрыть терминал с запущенным процессом?
- Процесс получит SIGHUP и обычно завершится.
Как этого избежать?
Использовать
nohup
:nohup ./script &
Современные фишки:
setsid ./script
— запуск процесса вне сессииtmux
/screen
— мультиплексоры терминала: процессы не зависят от SSH/терминала вообще
SIGQUIT — завершить интерактивную сессию с дампом памяти.
SIGCONT — продолжить приостановленный процесс.
Расширенные команды работы с процессами
Как убить все процессы, начинающиеся на “fire”?
pkill fire*
Что такое
nice
?nice
— запуск команды с пониженным или повышенным приоритетом по отношению к другим процессам.“nice” больше — приоритет выше? Нет! Чем выше значение nice, тем ниже приоритет процесса.
Стандартное значение nice:
0
Может ли обычный пользователь уменьшить значение nice (то есть повысить приоритет)?
- Нет, только root может задавать nice меньше нуля.
Современные фишки:
renice
— изменить приоритет уже запущенного процессаionice
— задать приоритет ввода/вывода для задач (актуально для бэкапов/архивов)
Мониторинг процессов
Как смотреть нагрузку процессов?
top
htop
(более удобный)
Как изменить частоту обновления в
top
?- Нажать
d
, затем указать, например,1.0
- Нажать
Современные инструменты мониторинга:
Cockpit
Grafana
Prometheus
Nagios
Telegraf
Дополнительно:
- Glances — интерактивная CLI-утилита, показывает всё (процессы, память, сеть, диски)
- bpytop/bashtop — красивые топы в терминале
- Netdata — автодашборд по всем системным метрикам
- systemd-cgtop — загрузка cgroup-ов (актуально для контейнеризации и systemd)
⚡️ Краткий справочник (2025)
- Все процессы:
ps aux
илиps -ef
- Дерево процессов:
pstree
- Фоновый запуск:
somecommand &
- Просмотр задач шелла:
jobs
- Передний план:
fg %N
- Фон:
bg %N
- Пауза:
Ctrl+Z
- Продолжить:
bg %N
- Прервать:
Ctrl+C
- Мягкое завершение:
kill PID
- Жёсткое завершение:
kill -9 PID
- Игнорировать SIGHUP:
nohup command &
илиdisown
- Мониторинг:
top
,htop
,glances
,bpytop
,systemd-cgtop
- Системный мониторинг: Cockpit, Grafana, Prometheus, Nagios, Netdata
На этом все.