Все мы в тот или иной момент сталкивались с зависанием программы и отсутствием ответа. В таких случаях завершение программы и ее перезапуск – простое и эффективное решение. В этой статье мы покажем вам, как завершить процессы, не отвечающие на запросы, с помощью команды Kill.
Команда “Kill”
Как упоминалось ранее, когда программа перестает отвечать и вы не можете ее перезапустить, вам нужно новое решение. В этот момент пользователи Windows откроют свой диспетчер задач, чтобы избавиться от зависшего процесса. В Linux нет встроенного диспетчера задач, но есть команда, которую мы можем использовать для достижения того же эффекта, что и функция «Завершить задачу» в Windows. Эта команда известна как команда Kill, и мы можем использовать ее по-разному, чтобы помочь нам и системе избавиться от поврежденных экземпляров.
Синтаксис Kill
Синтаксис команды Kill прост.
$ kill -- [signal] PID
Здесь необходимо пояснить две вещи, а именно сигнал и PID. Давайте рассмотрим их по очереди и узнаем, как они влияют на функциональность этой команды.
Параметр сигнала
Во-первых, это сигнал. Сигналы – это простые цифры, обозначающие имя. Команда Kill может выполнять разные задачи в зависимости от подаваемого вами сигнала. Пользователи могут использовать более 60 различных значений сигналов, каждый из которых выполняет отдельные конкретные задачи. Чтобы просмотреть все эти параметры, вы можете использовать следующую команду:
Как видите, всего доступно 64 варианта.
Хотя существует более 60 различных сигналов, ниже описаны два из наиболее распространенных.
- SIGKILL (9): Как следует из названия, эта команда полностью завершает процесс без сохранения данных программы. Эта команда используется только в крайнем случае.
- SIGTERM (15): генерирует сигнал завершения, который закрывает программу безопасным способом. Это также сигнал по умолчанию.
Сигналы могут быть дополнительно определены 3 различными способами, описанными ниже.
1. Мы можем указать сигнал соответствующей цифрой:
$ kill -9 PID
2. Мы можем указать сигнал по его имени:
$ kill -SIGKILL PID
3. Мы можем указать сигнал без SIG в названии.
$ kill -kill PID
Все эти команды выполняют одну и ту же задачу.
Параметр PID
PID – это идентификационный номер процесса. В Linux и Unix-подобных системах каждому процессу, выполняемому системой, присваивается идентификационный номер процесса (далее именуемый PID). Чтобы убить процесс, нужно знать его PID. Чтобы найти PID для данного процесса, мы можем использовать следующие команды.
$ pidof [process name] $ pgrep [process name]
Использование команды “Kill”
Теперь, когда вы поняли синтаксис, мы можем выполнить команду Kill. В качестве примера мы будем использовать Kill on Thunderbird Mail – предустановленную программу в Ubuntu. Сначала мы определим его PID, а затем завершим процесс с помощью сигнала SIGTERM.
Сначала откройте командный терминал для Ubuntu. После этого выполните следующую команду:
Как вы теперь знаете, PID Thunderbird Mail запускает следующую команду, чтобы завершить процесс.
$ kill -SIGTERM 7075
Или
$ kill -15 7075
Когда вы нажмете Enter, вы заметите, что процесс и его окно больше не существуют. Вы также можете завершить несколько процессов вместе, одновременно введя PID процессов.
$ kill -[signal] PID1 PID2…..PIDN
Более того, пользователи могут завершить процесс, используя команды kill и pidof/pgrep в одной строке. Синтаксис такой договоренности:
$ kill -[signal] $pgrep [process name]
Причины, по которым Kill может не работать
Как указывалось ранее, сигнал по умолчанию, отправляемый с командой KILL, – SIGTERM. SIGTERM по существу уведомляет процесс о том, что он должен очистить себя и завершить работу. Это «хороший» способ завершить или убить процесс. Однако в некоторых процессах хороший способ не решит проблему.
Если вы заметили, что процесс, который вы приказали завершить, все еще выполняется после использования сигнала SIGTERM, не беспокойтесь, так как это обычное осложнение, которое возникает при использовании Kill. Как мы уже говорили, иногда это может происходить и при определенных процессах.
Чтобы избавиться от этой проблемы, вы можете использовать сигнал SIGKILL для полного завершения процесса. Сигнал SIGKILL позволяет системе взять дело в свои руки. Так что, если вы встретите такую неприятную ситуацию, вы всегда можете выйти из нее с помощью сигнала SIGKILL или -9.
Важно использовать SIGKILL экономно и в ситуациях, которые SIGTERM решить не может. SIGTERM остается по умолчанию и самым безопасным; следовательно, лучший способ завершить процесс.
Команда Killall
Команда Kill встроена в Linux и другие операционные системы на базе Unix, но команда Killall предназначена только для пользователей Linux. Эта команда позволяет пользователю завершить процесс, используя имя процесса. Нет необходимости находить PID процесса. Синтаксис команды Killall:
$ killall -[signal] [process name]
Эта команда может служить хорошей альтернативой, если по какой-то причине Kill не работает у вас даже после предписанных решений.
Вывод
В этой статье рассказывается о команде Kill, ее назначении, синтаксисе, параметрах и использовании. Кроме того, мы увидели, что может привести к неправильной работе команды Kill, и исправили эти проблемы. Надеюсь, это было информативное и интересное чтение для вас, и мы решили все проблемы, которые у вас возникли с этой командой.