Подробный гайд: Как завершить процесс через командную строку в Astra Linux

Завершение процессов в Astra Linux: поиск PID через ps, pgrep, команды kill, pkill, killall, сигналы SIGTERM, SIGKILL, мандатный контроль Parsec и т. д.

2026.04.08                  


Подробный гайд: Как завершить процесс через командную строку в Astra LinuxПодробный гайд: Как завершить процесс через командную строку в Astra Linux - Astra Linux (как Common Edition, так и Special Edition) основана на Debian и использует стандартное ядро Linux. Поэтому управление процессами полностью соответствует общепринятым POSIX-стандартам. Ниже приведён пошаговый алгоритм, разбор команд, особенности безопасности и рекомендации для Astra Linux.

Шаг 1. Поиск нужного процесса

Прежде чем завершать процесс, необходимо точно знать его PID (Process ID) и убедиться, что это действительно тот процесс, который нужно остановить.

1.1 Через ps и grep

ps aux | grep имя_процесса

Пример:

ps aux | grep firefox

Вывод:

user  12345  2.1  1.4 1234567 89012 ?  Sl  10:15   0:05 /usr/lib/firefox/firefox

12345 — это PID.

1.2 Через pgrep (рекомендуется для скриптов)

pgrep -a имя_процесса

Ключ -a выводит полный путь к исполняемому файлу. Удобно для точного сопоставления.

1.3 Через интерактивные мониторы

top        # нажмите `k`, введите PID, выберите сигнал
htop       # выделите процесс, нажмите `F9`, выберите сигнал

htop обычно предустановлен в Astra Linux CE. В Special Edition может потребоваться установка из репозитория.

Шаг 2. Понимание сигналов завершения

Команда kill не «убивает» процесс напрямую, а отправляет ему сигнал. Процесс может перехватить сигнал и корректно завершиться.

Сигнал Номер Поведение
SIGTERM 15 Вежливый запрос на завершение. Процесс может сохранить данные и освободить ресурсы. Используется по умолчанию.
SIGKILL 9 Принудительное завершение ядром. Процесс не может перехватить или проигнорировать. Риск потери данных.
SIGHUP 1 Перечитать конфигурацию (часто используется для демонов).
SIGSTOP 19 Приостановить выполнение (не завершает).
SIGCONT 18 Возобновить выполнение после SIGSTOP.

Рекомендация:

  • всегда начинайте с SIGTERM (по умолчанию). SIGKILL (-9) применяйте только в крайних случаях.

Шаг 3. Завершение процесса

3.1 Стандартное завершение

kill 12345
# или явно:
kill -15 12345

3.2 Принудительное завершение

kill -9 12345
# или
kill -KILL 12345

3.3 Проверка результата

ps -p 12345 -o pid,stat,comm

Если процесс завершён, команда ничего не выведет. Если остался статус Z (zombie) или D (uninterruptible sleep), см. раздел устранения неполадок ниже.

Альтернативные команды

Команда Описание Пример
pkill Завершает процессы по имени или паттерну (поддерживает регулярные выражения) pkill -f "python app.py"
killall Завершает все процессы с точным именем. В Linux чувствителен к регистру! killall nginx
kill -STOP Приостанавливает процесс kill -STOP 12345
kill -CONT Возобновляет процесс kill -CONT 12345

Примечание:

  • killall -r в Astra/Debian может работать нестабильно. Для сложных паттернов используйте pkill -f.

Особенности Astra Linux

1. Мандатный контроль доступа (Parsec/Mandac)

  • В Astra Linux Special Edition включён расширенный механизм безопасности. Даже от root или через sudo вы можете получить ошибку "Operation not permitted", если процесс принадлежит другому уровню конфиденциальности или категории.

Решение:

  • проверьте мандатный контекст через ps -Z <PID> или обратитесь к администратору безопасности для корректировки политик.

2. Системные службы

Если процесс управляется systemd (например, apache2, postfix, astral-agent), правильнее использовать:

   sudo systemctl stop имя_службы
   sudo systemctl restart имя_службы

Это гарантирует корректное завершение зависимостей и перезапуск.

3. Проверка прав

Для процессов других пользователей или системных демонов используйте sudo:

   sudo kill 12345

Рекомендуемый алгоритм действий

  1. Найдите PID: pgrep -a имя или ps aux | grep имя
  2. Убедитесь, что это нужный процесс (путь, пользователь, CPU/MEM)
  3. Отправьте мягкий сигнал: kill PID
  4. Подождите 3–5 секунд. Проверьте: ps -p PID
  5. Если процесс «завис»: kill -9 PID
  6. Для служб: sudo systemctl stop имя_службы

Важные предупреждения

  • Никогда не отправляйте kill -9 процессам init, systemd, kthreadd, kworker* — это приведёт к панике ядра или потере данных.
  • Процессы в состоянии Z (zombie) нельзя убить. Они исчезнут после завершения родительского процесса или вызова wait().
  • kill -9 не вызывает обработчики завершения, не сохраняет кэш, не закрывает файлы корректно.
  • Всегда проверяйте PID перед вводом. Случайное завершение sshd или network-manager может заблокировать доступ к системе.

Шпаргалка (Cheat Sheet)

Задача Команда
Найти PID pgrep -a имя / ps aux | grep имя
Мягкое завершение kill PID
Принудительное завершение kill -9 PID
Завершить по имени killall имя
Завершить по паттерну pkill -f "часть_команды"
Проверить, жив ли процесс ps -p PID
Перезапустить службу sudo systemctl restart имя_службы
Посмотреть все доступные сигналы kill -l