Введение
В этом лабораторном занятии вы научитесь завершать процессы в Linux с помощью команд kill, killall и pkill. Эти команды являются важными для управления запущенными процессами и могут использоваться для остановки нереагирующих приложений или освобождения системных ресурсов.
По завершении этого лабораторного занятия вы сможете:
- Использовать команду
killдля завершения определенного процесса - Использовать команду
killallдля завершения нескольких процессов по имени - Использовать команду
pkillв качестве альтернативы командеkillall
Понимание идентификаторов процессов и сигналов
Перед тем, как мы начнем завершать процессы, важно понять два ключевых понятия: идентификаторы процессов (Process IDs, PID) и сигналы.
Откройте терминал в своей виртуальной машине Ubuntu. По умолчанию вы должны находиться в директории
/home/labex/project. Если вы не уверены, вы всегда можете проверить текущую директорию, введяpwdи нажав Enter.Начнем с запуска простого фонового процесса. Введите следующую команду:
sleep 1000 &Эта команда запускает процесс, который будет "спать" в течение 1000 секунд и запускает его в фоновом режиме. Символ
&в конце сообщает оболочке запустить команду в фоновом режиме, позволяя вам продолжать использовать терминал.Чтобы увидеть запущенные процессы, используйте команду
ps:ps aux | grep sleepЭта команда показывает все запущенные процессы (
ps aux), а затем фильтрует вывод, чтобы показать только строки, содержащие "sleep" (grep sleep).Вы должны увидеть вывод, похожий на следующий:

Число во второй колонке - это идентификатор процесса (PID). Мы будем использовать его для завершения процесса позже.
- Linux использует сигналы для общения с процессами. Наиболее распространенные сигналы для завершения процессов:
- SIGTERM (15): Грамотно завершить процесс. Это сигнал по умолчанию, отправляемый командой
kill. - SIGKILL (9): Принудительно убить процесс. Этот сигнал следует использовать в качестве последнего средства, когда SIGTERM не работает.
- SIGTERM (15): Грамотно завершить процесс. Это сигнал по умолчанию, отправляемый командой
Теперь, когда мы понимаем PID и сигналы, мы готовы перейти к использованию команды kill.
Использование команды kill
Команда kill используется для отправки сигнала определенному процессу, идентифицируемому по его PID. По умолчанию она отправляет сигнал SIGTERM, который просит процесс завершиться корректно.
Завершим процесс
sleep, который мы запустили ранее. Сначала найдем его PID с помощью командыps:ps aux | grep sleepЗапишите PID процесса
sleep. Это будет число во второй колонке вывода.Теперь используйте команду
killдля завершения процесса:kill <PID>Замените
<PID>на фактический идентификатор процесса, который вы записали. Например, если PID равен 1234, вы должны ввестиkill 1234.Проверьте, запущен ли процесс еще:
ps aux | grep sleepВ выводе больше не должно быть процесса
sleep, за исключением самой командыgrep.
Если процесс все еще запущен (что маловероятно для простой команды sleep, но возможно для более сложных приложений), вы можете использовать более сильный сигнал:
kill -9 <PID>

Эта команда отправляет сигнал SIGKILL, который принудительно завершает процесс. Будьте осторожны при использовании SIGKILL, так как он не позволяет процессу выполнить очистку, что может привести к потере данных или другим проблемам в более сложных приложениях.
Использование команды killall
Команда killall позволяет завершать процессы по имени, что может быть более удобно, чем использование PID, особенно когда запущено несколько экземпляров одной и той же программы.
Запустите несколько процессов
sleep:sleep 2000 & sleep 2000 & sleep 2000 &Эта команда запускает три отдельных процесса
sleep, каждый из которых работает в фоновом режиме в течение 2000 секунд.Проверьте, что процессы запущены:
ps aux | grep sleepВы должны увидеть три процесса
sleepв списке.Теперь используйте команду
killallдля завершения всех процессовsleep:sudo killall sleepЗдесь мы используем
sudo, так какkillallможет потребовать повышенных привилегий для завершения процессов, запущенных другими пользователями или системными процессами. Вам может быть предложено ввести ваш пароль.Проверьте, что процессы были завершены:
ps aux | grep sleepВ выводе больше не должно быть никаких процессов
sleep, за исключением самой командыgrep.
Если вы получаете ошибку "Operation not permitted", это означает, что у вас нет необходимых прав для завершения определенных процессов. В этом случае использование sudo, как показано выше, должно решить проблему.
Использование команды pkill
Команда pkill представляет собой еще один способ завершения процессов по имени, аналогичный команде killall. Она особенно полезна, когда вы хотите завершить процессы на основе частичного совпадения имен.
Запустите еще несколько процессов
sleep:sleep 3000 & sleep 3000 & sleep 3000 &Эта команда запускает еще три процесса
sleep, каждый из которых работает в фоновом режиме в течение 3000 секунд.Используйте команду
pkillдля завершения этих процессов:sudo pkill sleepКак и с командой
killall, мы используемsudo, чтобы убедиться, что у нас есть необходимые права для завершения всех соответствующих процессов.Проверьте, что процессы были завершены:
ps aux | grep sleepВ выводе не должно быть никаких процессов
sleep, за исключением самой командыgrep.
Основное различие между командами pkill и killall заключается в том, что pkill может находить совпадения по частичному имени процесса. Например, команда pkill fire завершит как процессы firefox, так и firebird. Это может быть как мощным, так и опасным средством, поэтому всегда проверяйте свои команды pkill перед их выполнением.
Практика с реальными приложениями
Теперь, когда вы узнали, как использовать команды kill, killall и pkill, давайте попрактикуемся на реальном приложении. В качестве примера мы будем использовать Firefox. Этот шаг практики нужно выполнять в десктопной среде.

Запустите веб - браузер Firefox:
firefox &Эта команда запускает Firefox в фоновом режиме. Вы должны увидеть окно Firefox на рабочем столе.
Используйте команду
psдля поиска PID Firefox:ps aux | grep firefoxЗапишите PID основного процесса Firefox. Обычно это будет первый в списке процесс Firefox.
Используйте команду
killдля завершения работы Firefox:kill <PID>Замените
<PID>на фактический идентификатор процесса Firefox, который вы записали.Если Firefox не закрывается (что возможно, так как некоторые приложения перехватывают сигнал SIGTERM), попробуйте использовать сигнал SIGKILL:
kill -9 <PID>Помните, что SIGKILL следует использовать в качестве последнего средства, так как он не позволяет приложению сохранить свое состояние или корректно выполнить очистку.
В качестве альтернативы вы можете использовать команды
killallилиpkill:sudo killall firefoxили
sudo pkill firefoxЭти команды завершат все процессы Firefox сразу, что может быть более удобно, чем завершение процессов по одному.
Помните, что принудительное завершение работы приложений может привести к потере данных, поэтому всегда лучше закрывать приложения обычным способом, если это возможно. Эти команды следует использовать, когда приложение не реагирует на действия или когда вам нужно быстро освободить системные ресурсы.
Резюме
Поздравляем! Вы успешно завершили этот практический урок по завершению процессов в Linux. Вы научились:
- Использовать команду
killдля завершения определенного процесса по его PID. - Использовать команду
killallдля завершения нескольких процессов по имени. - Использовать команду
pkillв качестве альтернативыkillall. - Применять эти команды как к простым фоновым процессам, так и к реальным приложениям.
Помните, что хотя эти команды являются мощными инструментами для управления процессами, используйте их с осторожностью. Завершение критических системных процессов может привести к нестабильности системы. Всегда проверяйте, какой процесс вы собираетесь завершить, прежде чем использовать эти команды.
По мере продолжения вашего пути в Linux вы обнаружите, что эти навыки управления процессами будут неоценимы для поддержания стабильной работы системы и устранения неполадок. Продолжайте практиковаться с этими командами, чтобы стать более уверенным в управлении процессами в Linux!



