Если вы новый пользователь Linux, то вам требуется знать. Как убить (завершить) процесс в Linux, используя параметры командной строки? Как я могу убить запущенный процесс на Unix?
Linux и другие Unix — подобные операционные системы поставляются с командой kill. Данная команда позволяет завершить зависшие или нежелательные процессы без необходимости выхода из системы или перезапуска сервера или ПК.
Команда kill посылает заданный сигнал, например, KILL process, указанному процессу или группе процессов. Если сигнал не указан, посылается сигнал TERM. Обратите внимание, что команда kill может быть внутренней, как часть встроенной функции оболочки. Или внешней, расположенной по адресу /bin/kill. Синтаксис остаётся аналогичным независимо от того, какая команда внутренняя или внешняя.
Возможно вам будет интересно: Как обновить openSUSE Linux
Список распространенных сигналов TERM в Linux или Unix
Linux и Unix-подобные операционные системы поддерживают стандартные сигналы завершения, они перечисленные ниже:
SIGHUP (1) — обнаружено зависание на управляющем терминале или смерть управляющего процесса. Используйте SIGHUP для перезагрузки файлов конфигурации и открытия/закрытия файлов журнала.
SIGKILL (9) — это сигнал убийства. Используйте SIGKILL в качестве последнего средства для уничтожения процесса. Он не сохранит данные и не очистит процесс.
SIGTERM (15) — сигнал завершения. Это стандартный и самый безопасный способ завершения процесса.
Команды kill и killall поддерживают более 60 сигналов. Однако большинству пользователей необходимо использовать только сигнал 9 или 15. Чтобы получить полный список сигналов, введите:
sudo kill -l
Возможно вам будет интересно: Включить SSH на Fedora
Что такое PID?
Процесс в Linux или Unix — это запущенный экземпляр программы. Например, Firefox — это запущенный процесс, если вы просматриваете Интернет. Каждый раз, когда вы запускаете браузер Firefox в системе автоматически присваивается уникальный идентификационный номер процесса (PID). PID автоматически присваивается каждому процессу при его создании в системе. Чтобы узнать PID процесса firefox или httpd, используйте следующую команду pidof:
pidof httpd
pidof apache2
pidof firefox
Или используйте комбинацию команды ps и команды grep/egrep:
ps aux | grep httpd
ps aux | grep apache2
ps aux | grep firefox
Возможно вам будет интересно: Как узнать версию Linux
Команда pgrep
Вы также можете использовать команду pgrep для поиска идентификатора процесса (PID):
pgrep process
pgrep firefox
pgrep vim
Команда PS для просмотра процессов Linux
Вы можете найти уникальный номер процесса с помощью команды PS в разделе PID
Как убить процесс в Linux из командной строки
Синтаксис следующий:
kill -[signal] PID
kill -15 PID
kill -9 PID
kill -SIGTERM PID
kill [options] -SIGTERM PID
Возможно вам будет интересно: Как установить плагины Vim в Linux
Какие разрешения Linux или Unix нужны, чтобы убить процесс?
Правила убийства процесса просты:
- Вы можете убить все свои собственные процессы.
- Только пользователь root может убить процесс, запущенный другими пользователями.
Примеры команд kill для завершения процесса в Linux
В этом примере я собираюсь убить серверный процесс lighttpd.
Шаг 1 — Узнайте PID (идентификатор процесса) lighttpd
Чтобы узнать PID любой программы, используйте команду ps или pidof. Например, если имя процесса — lighttpd, вы можете использовать любую из следующих команд для получения идентификатора процесса:
pidof lighttpd
Примерный ответ терминала:
3486
Или такой ответ:
lighttpd 3486 0.0 0.1 4248 1432 ? S Jul31 0:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conflighttpd 3492 0.0 0.5 13752 3936 ? Ss Jul31 0:00 /usr/bin/php5-cg
Шаг 2 — убить процесс с помощью PID
Процессу lighttpd присвоен PID # 3486. Чтобы убить процесс lighttpd, требуется передать PID следующим образом:
# kill 3486
или
$ sudo kill 3486
Эта команда приведет к завершению процесса с PID 3486.
Шаг 3 — Как узнать, что процесс завершен / убит
Опять используйте команду ps или команду pidof, ну или команду pgrep следующим образом:
$ ps aux | grep lighttpd
$ pidof lighttpd
$ pgrep lighttpd
На экране не должно быть никакого вывода или PID.
Замечание об отправке более сильного сигнала # 9 (SIGKILL).
Если в команде kill не указан сигнал, по умолчанию посылается сигнал # 15 (SIGTERM). Таким образом, команда kill 3486 аналогична следующей команде:
# kill -15 3486
# kill -SIGTERM 3486
Или
$ sudo kill -15 3486
$ sudo kill -SIGTERM 3486
В некоторых случаях сигнала # 15 недостаточно. Например, lighttpd может не быть убит сигналом # 15 из-за открытых сокетов. Поэтому процесс (PID) # 3486 надо убить мощным сигналом # 9:
# kill -9 3486
# kill -SIGKILL 3486
Или
$ sudo kill -9 3486
$ sudo kill -SIGKILL 3486
Где -9 или -SIGKILL — это специальный сигнал kill, который почти гарантированно убивает процесс железным кулаком.
Как убить два или более PID в Linux?
Для того чтобы убить два или более PID, можно использовать одну команду:
kill pid1 pid2 pid3kill -15 pid1 pid2 pid3kill -9 pid1 pid2 pid3kill -9 3546 5557 4242
Возможно вам будет интересно: Как установить Wine на Linux Mint 20 и запустить приложения Windows
Команда killall
killall — это команда только для Linux. Она может быть доступна во FreeBSD и других Unix-подобных системах, таких как macOS, для уничтожения процессов по имени. Поэтому нет необходимости искать PID с помощью команд «pidof process» или «ps aux | grep process». Синтаксис команды следующий:
killall {Process-Name-Here}killall -9 {Process-Name-Here}killall -15 {Process-Name-Here}
Например чтобы убить процесс на сервере lighttpd, введите:
# killall -15 lighttpd
Или
# killall -9 lighttpd
Например чтоб завершить процесс веб-браузера Firefox, введите:
# killall -9 firefox-bin
Внимание: Не используйте команду killall в операционных системах Solaris Unix.
Заключение
В этой стате мы показали как посмотреть и убить процесс из командной строки в Linux и Unix-подобных операционных системах. Как я уже говорил, команда killall в UNIX-подобных системах делает кое-что еще. Она убивает все процессы, а не только определенный процесс. Не используйте killall в Solaris.