Просмотр и управление процессами, фоновые задачи, сигналы и управление службами через systemctl
| Команда | Вариант | Что делает |
|---|---|---|
| ps aux | ps aux | Все процессы с пользователем, CPU, памятью и командой (формат BSD). |
| ps -ef | ps -ef | Все процессы в формате System V, с PPID. |
| ps -u | ps -u ivan | Процессы конкретного пользователя. |
| ps -p | ps -fp 4312 | Информация о процессе по PID. |
| ps --forest | ps -ef --forest | Дерево родителей и потомков. |
| ps --sort | ps aux --sort=-%mem | head | Сортировка по памяти (минус — по убыванию). |
| ps -o | ps -eo pid,ppid,user,%cpu,%mem,cmd | Выбрать свои колонки. |
| pstree | pstree -p 1 | Дерево процессов с PID. |
| top | top -u ivan | Интерактивный монитор, фильтр по пользователю. |
| top keys | P (CPU), M (память), k (kill), q (выход) | Клавиши в top. |
| htop | htop -p 4312 | Удобный монитор с деревом (нужен пакет htop). |
| pgrep | pgrep -a nginx | PID процессов по имени, с командой. |
| pgrep -f | pgrep -f "gunicorn.*app:main" | Поиск по полной командной строке. |
| pgrep -u | pgrep -u ivan python | Процессы пользователя с именем python. |
| pidof | pidof sshd | PID по точному имени программы. |
| lsof -p | lsof -p 4312 | Открытые файлы и сокеты процесса. |
| strace -p | strace -p 4312 -e trace=network | Системные вызовы процесса (диагностика). |
| /proc/PID | cat /proc/4312/status | Сведения ядра о процессе: состояние, память, потоки. |
| Команда | Вариант | Что делает |
|---|---|---|
| kill -l | kill -l | Список всех сигналов. |
| kill | kill 4312 | Отправить SIGTERM (мягкое завершение, по умолчанию). |
| kill -HUP | kill -HUP 4312 | Перечитать конфигурацию (так работают многие демоны). |
| kill -INT | kill -INT 4312 | Как Ctrl+C. |
| kill -STOP / -CONT | kill -STOP 4312 ; kill -CONT 4312 | Приостановить и продолжить процесс. |
| kill -KILL | kill -9 4312 | Принудительно, процесс не может его перехватить. Крайняя мера. |
| kill -0 | kill -0 4312 && echo running | Проверка, что процесс существует, без отправки сигнала. |
| kill -USR1 | kill -USR1 4312 | Пользовательский сигнал (например, для смены уровня логов). |
| pkill | pkill -f "old-worker" | Завершить по имени или шаблону командной строки. |
| pkill -u | pkill -KILL -u ivan | Завершить все процессы пользователя. |
| killall | killall -HUP nginx | Отправить сигнал всем процессам с именем (пакет psmisc). |
| timeout | timeout -k 5 30 long_command | Завершить команду через 30 секунд, при зависании — через 5 секунд дополнительно. |
| Команда | Вариант | Что делает |
|---|---|---|
| nice | nice -n 10 ./batch.sh | Запустить с пониженным приоритетом (от -20 до 19). |
| renice | renice -n 5 -p 4312 | Изменить приоритет работающего процесса. |
| ionice | ionice -c3 -p 4312 | Класс дискового ввода-вывода: 3 — только когда диск свободен. |
| & | ./job.sh & | Запустить в фоне. |
| jobs | jobs -l | Список фоновых задач текущей оболочки. |
| fg / bg | fg %1 ; bg %1 | Вернуть задачу на передний план или продолжить в фоне. |
| Ctrl+Z | Ctrl+Z | Приостановить текущую задачу. |
| disown | disown -h %1 | Отвязать задачу от оболочки, чтобы она не получала SIGHUP при закрытии. |
| nohup | nohup ./job.sh > job.log 2>&1 & | Переживает закрытие сессии, вывод в файл. |
| wait | wait $pid | В скрипте дождаться завершения фоновой задачи. |
| sleep | sleep 1.5 | Пауза, в секундах (можно с суффиксами s, m, h). |
| Команда | Вариант | Что делает |
|---|---|---|
| systemctl status | systemctl status nginx | Состояние, PID, последние записи журнала. |
| systemctl start | systemctl start nginx | Запустить службу. |
| systemctl stop | systemctl stop nginx | Остановить. |
| systemctl restart | systemctl restart nginx | Перезапустить (с остановкой). |
| systemctl reload | systemctl reload nginx | Перечитать конфигурацию без остановки (если служба поддерживает). |
| reload-or-restart | systemctl reload-or-restart nginx | Перечитать, а если не поддерживается, перезапустить. |
| enable | systemctl enable nginx | Автозапуск при загрузке. |
| enable --now | systemctl enable --now nginx | Включить автозапуск и сразу запустить. |
| disable --now | systemctl disable --now nginx | Выключить автозапуск и сразу остановить. |
| is-active | systemctl is-active nginx | Короткий ответ active/inactive (удобно в скриптах). |
| is-enabled | systemctl is-enabled nginx | Включена ли автозагрузка. |
| is-failed | systemctl is-failed nginx | Упала ли служба. |
| list-units | systemctl list-units --type=service --state=running | Запущенные службы. |
| --failed | systemctl --failed | Все упавшие службы — хорошая первая проверка. |
| list-unit-files | systemctl list-unit-files --type=service | Все установленные службы и их состояние автозапуска. |
| daemon-reload | systemctl daemon-reload | Перечитать unit-файлы после изменения. |
| cat | systemctl cat nginx | Показать unit-файл, включая переопределения. |
| edit | systemctl edit nginx | Создать override.conf без правки оригинала. |
| edit --full | systemctl edit --full nginx | Полная копия unit-файла для редактирования. |
| mask / unmask | systemctl mask bluetooth | Полностью запретить запуск, даже вручную. |
| show | systemctl show -p MainPID,ActiveState nginx | Свойства службы в виде ключ=значение. |
| list-timers | systemctl list-timers --all | Расписание systemd-таймеров (аналог cron). |
| reboot | systemctl reboot | Перезагрузка. |
| poweroff | systemctl poweroff | Выключение. |
| systemd-analyze | systemd-analyze blame | head | Какие службы медленнее всего стартуют. |
| Команда | Вариант | Что делает |
|---|---|---|
| journalctl -u | journalctl -u nginx | Журнал одной службы. |
| journalctl -f | journalctl -u nginx -f | Следить за новыми записями. |
| journalctl -n | journalctl -u nginx -n 100 --no-pager | Последние 100 записей без постраничного вывода. |
| journalctl --since | journalctl --since "2026-10-17 09:00" --until "10:00" | Интервал времени. |
| journalctl --since | journalctl --since "1 hour ago" | Относительное время. |
| journalctl -p | journalctl -p err -b | Только ошибки (уровни: emerg, alert, crit, err, warning, notice, info, debug). |
| journalctl -k | journalctl -k | Сообщения ядра (как dmesg). |
| journalctl -b | journalctl -b -1 | Журнал предыдущей загрузки (полезно после падения). |
| journalctl -o | journalctl -u app -o json-pretty -n 1 | Формат вывода: short, verbose, json, cat и др. |
| journalctl --disk-usage | journalctl --disk-usage | Сколько места занимает журнал. |
| --vacuum-time | sudo journalctl --vacuum-time=7d | Удалить записи старше 7 дней. |
| --vacuum-size | sudo journalctl --vacuum-size=500M | Ограничить размер журнала. |
# Служба упала: что случилось и когда systemctl status app --no-pager -l journalctl -u app --since "30 min ago" --no-pager # Перезапуск службы после правки конфига с проверкой nginx -t && systemctl reload nginx # Найти самый прожорливый процесс по памяти ps -eo pid,user,%mem,cmd --sort=-%mem | head -5 # Аккуратно остановить зависший процесс: сначала мягко, потом жёстко kill 4312 ; sleep 5 ; kill -0 4312 2>/dev/null && kill -9 4312
kill -9 и systemctl mask — мощные инструменты. Принудительное завершение не даёт программе сохранить данные и удалить временные файлы. Перед mask убедитесь, что служба не нужна другим зависимостям.
systemctl cat. Так вы увидите рабочую папку, переменные окружения и пользователя, от имени которого она работает.