Завис Linux? Экстренное руководство: как мгновенно остановить все процессы пользователя
Система внезапно начала тормозить, а ресурсы процессора зашкаливают? Вы не одиноки. В многопользовательской среде Linux такое случается, когда процессы конкретного пользователя выходят из-под контроля. Это может быть зависшее приложение, фоновый скрипт-«пожиратель» памяти или просто необходимость срочно освободить систему.
Вам больше не придется вручную выискивать и закрывать десятки задач. Мы покажем, как решить проблему одной точной командой в терминале. Вы научитесь мгновенно останавливать все процессы, принадлежащие определенному пользователю, даже если их список занимает несколько экранов.
Забудьте о рутине. Вместо кропотливого копирования каждого PID вы сможете использовать мощь конвейеров Linux. Мы раскроем несколько рабочих методов: от классического связки `ps`, `grep` и `kill` до изящных команд `killall` и `pkill`.
Хотите вернуть системе отзывчивость за секунды и стать настоящим повелителем процессов? Эти знания — must-have для любого, кто серьезно работает с Linux. Переходите к полной статье, чтобы освоить профессиональные инструменты для экстренного вмешательства и точечного управления системой.
Как мы знаем, Linux — многопользовательская ОС, поэтому с каждым пользователем могут быть связаны его собственные процессы. Такое разделение существует в целях безопасности. Запуская ту или иную программу от имени непривилегированного пользователя, ОС снижает риски несанкционированного проникновения и риски повреждения системных файлов.
В этой статье мы расскажем о том, как завершить все запущенные процессы конкретного пользователя.
Как завершить все процессы пользователя?
Для начала сформируем перечень всех процессов всех пользователей. В терминале Linux выполним следующую команду:
ps au

Как видно на скриншоте, имеются процессы, связанные с тремя пользователями (root, mint1 и mint). Допустим, нам срочно понадобилось завершить все процессы пользователя mint1.
Здесь следует немного подробнее остановиться на самом понятии процесса в Linux. Процесс – программа, запущенная в виртуальном адресном пространстве. Каждый процесс имеет свой уникальный номер или идентификатор — PID (Process Identificator). Работая с процессами, операционная система идентифицирует процессы именно по PID.
Для того, чтобы убить ненужные процессы, достаточно убить все PID процессов конкретного пользователя (в данном случае mint1). Для этого можно просто скопировать номера идентификаторов этого пользователя и ввести следующую команду:
sudo kill -9 3501 4333
Однако, количество PID может быть куда больше двух. Да и выполнить все действия вообще-то тоже можно с помощью одной команды, умещающейся в одну строку.
Например, используем конвейер и программу grep ( символ | обозначает передачу результатов выполнения первой команды второй команде по конвейеру):
ps au | grep -e '^mint1'

С помощью grep были выбраны все процессы пользователя mint1. Далее необходимо из второй колонки слева выбрать все PID. Сделаем это с помощью программы awk, добавив, соответственно, ещё один конвейер:
ps au | grep -e '^mint1' | awk '{print $2}'

Теперь нужно убить полученные значения PID. Опять добавим конвейер (в данном и последующих примерах все команды выполняются от имени суперпользователя root) и выполним группу команд:
ps au | grep -e '^mint1' | awk '{print $2}' | xargs kill -9
С помощью такой конвейеризованной группы команд мы завершили все процессы пользователя mint1.
Подобный конвейер можно было бы сформировать и так:
ps aux | awk '/^mint1/ {print $2}' | xargs kill -9
Кроме того, для того, чтобы убить все процессы пользователя в Linux, можно воспользоваться также следующими командами:
killall -u mint1
или
pkill -u mint1
Однако и это ещё не всё. Нужно ещё проверить наличие процессов, связанных с пользователем mint1, и их состояние. Сделаем это с помощью команды:
pgrep -u mint1

Как видите, процессы, связанные с пользователем mint1, отсутствуют. Способов убить все процессы пользователя в Linux достаточно много, мы показали лишь некоторые из них.