- Использование консоли Linux для завершения процессов
- Что такое процесс?
- Гуманный ответ
- Команда завершения
- Команда pkill
- Команда killall
- Как убить процесс в Linux
- Сигналы отключения системы
- Завершение процессов с помощью команды kill
- Завершение процессов с помощью команды killall
- Завершение процессов с помощью команды pkill
- Выводы
- 7 способов убить не отвечающие программы в Linux
- 1. Убейте программу Linux, нажав «X»
- 2. Используйте системный монитор, чтобы убить процесс в Linux
- 3. Принудительно уничтожать процессы в Linux с помощью xkill
- 4. Используйте команду «kill»
- 5. Используйте «pgrep» и «pkill»
- 6. Убить всё с помощью «killall»
- 7. Создайте комбинацию клавиш Force-Kill
- Избегайте не отвечающего программного обеспечения: обновите свое оборудование
Использование консоли Linux для завершения процессов
Иногда уничтожение процесса — единственный способ избавиться от него. Несмотря на резкое название, «убить» процесс просто означает «заставить его выключиться». Вот как это сделать из командной строки Linux или macOS.
Что такое процесс?
Запуск таких программ, как ваш веб-браузер, фоновые процессы, связанные с вашей рабочей средой, и системные службы Linux — все это процессы.
Вы можете объединить процессы в две группы:
- Процессы переднего плана — это те, которые были запущены или запущены пользователем. Они могут быть в окне терминала или графическим приложением.
- Фоновые процессы — это все процессы, которые запускаются автоматически и не взаимодействуют с пользователями. Они не ожидают ввода от пользователей и не представляют результаты или вывод для них. Фоновые процессы — это такие вещи, как сервисы и демоны.
Если процессы на переднем плане находятся перед персоналом театра и актерами, то фоновые процессы — это закулисная команда «за кадром».
Когда процессы ведут себя неправильно или работают неправильно, они могут слишком долго загружать процессор, использовать вашу оперативную память или войти в жесткий вычислительный цикл и перестать отвечать на запросы. Графические приложения могут отказаться отвечать на щелчки мышью. Терминальные приложения могут никогда не вернуть вас в командную строку.
Гуманный ответ
«Убить» процесс просто означает «заставить процесс завершиться». Это может быть необходимо, если процесс отказывается отвечать.
Linux предоставляет команды kill , pkill и killall чтобы позволить вам сделать именно это. Эти команды могут использоваться с любым типом процесса, графической или командной строки, переднего плана или фона.
Команда завершения
Чтобы использовать kill , вы должны знать идентификатор процесса (PID) процесса, который хотите завершить. Команду ps можно использовать для поиска PID процесса.
Чтобы ps поиск по всем процессам, используйте опцию -e (все процессы). Желательно передавать результаты через less , их будет довольно много. Введите ps , пробел, -e , пробел, | (символ канала), другой пробел, а затем введите less . Нажмите Enter, чтобы выполнить команду.
Это даст вам список процессов, который выглядит как на скриншоте ниже. Вы можете искать вперед less используя клавишу / и вы можете искать назад, используя ? ключ.
Чтобы сосредоточиться на интересующем вас процессе, направьте вывод ps через grep и укажите имя — или часть имени — процесса.
Найдя PID процесса, который вы хотите завершить, передайте его команде kill в качестве параметра. Чтобы завершить процесс shutter определенный предыдущей командой, используйте эту команду:
Команда kill является тихим убийцей — она не дает никаких отзывов, если прошла успешно.
Команда pkill
Команда pkill позволяет вам убить процесс — или процессы — по имени. Вам не нужно идентифицировать процесс по PID. Для использования pkill вы предоставляете поисковый pkill который pkill использует для проверки по списку запущенных процессов. Соответствующие процессы прекращаются. Таким образом, вы должны быть уверены, что вы правильно написали этот поисковый запрос.
В качестве сети безопасности вы можете использовать команду pgrep перед использованием команды pkill. Команда pgrep также принимает поисковый запрос. В нем будет указан PID каждого процесса, который соответствует поисковому запросу. Это безопасно, потому что pgrep не будет выдавать какой-либо сигнал уничтожения процессам, и если вы неправильно наберете поисковый запрос, вы не убьете другой процесс по ошибке. Вы можете убедиться, что поисковый pkill правильно продуман, прежде чем передать его в pkill. И pkill и pgrep обрабатывают поисковый pkill одинаково. Их обращение настолько схоже, что они используют одну и ту же справочную страницу.
Предположим, что есть процесс с «subq» в его имени. Мы будем использовать команду ps -u dave | grep чтобы заглянуть за занавес. Вы можете видеть, что «subq» будет соответствовать этому процессу и только этому процессу. Это было просто, чтобы вы могли увидеть полное название процесса.
Давайте предположим, что наш пользователь этого не сделал; все, что они знают, — это имя процесса, содержащее подстроку «subq». Они используют pgrep чтобы проверить, что существует только одно совпадение с поисковым термином. Затем они используют этот поисковый термин вместе с pkill.
Вы можете использовать pkill чтобы убить несколько процессов одновременно. Здесь пользователь запускает pgrep чтобы проверить, сколько процессов запущено Chrome. Они используют pkill чтобы убить их всех. Затем они проверяют с помощью pgrep что все они были удалены.
Если запущено несколько процессов с одним и тем же именем, но вы не хотите уничтожать их все, вы можете использовать pgrep с параметром -f (командная строка), чтобы определить, какой процесс какой. Простым примером будут два процесса ping . Вы хотите убить одного из них, но не другого. Вы можете использовать их командные строки, чтобы различать их. Обратите внимание на использование кавычек для переноса параметра командной строки.
Команда killall
Предупреждение . В операционных системах Solaris и OpenIndiana команда killall уничтожит все принадлежащие вам процессы. Если вы являетесь пользователем root или вы выпустили sudo killall вы перезагрузите компьютер! Во время исследования этой статьи это поведение было подтверждено последней версией OpenIndiana Hipster 2018.10.
Команда killall работает аналогично команде pkill но с определенным отличием. Вместо передачи поискового запроса команде необходимо указать точное имя процесса.
Вы не можете предоставить частичное совпадение с именем процесса; Вы должны предоставить полное имя процесса, как показано:
Опция -y (младше чем) позволяет вам завершать процессы, которые выполнялись менее указанного периода. Период указан числами, за которыми следует одна из следующих единиц:
- s (секунды)
- m (минуты)
- h (часы)
- d (дни)
- w (недели)
- M (месяцы, примечание, заглавная «М»)
- y (годы)
Чтобы убить только что запущенный процесс под названием ana и оставить все старые экземпляры ana работающими, вы можете использовать следующие параметры с killall, если бы вы реагировали в течение двух минут:
Опция -o (старше чем) позволяет вам убивать процессы, которые выполнялись дольше указанного периода. Эта команда уничтожит все ssh соединения, которые работали дольше суток:
killall -o 1d sshd
Эти команды позволят вам точно и безопасно идентифицировать и завершать ошибочные процессы.
Всегда будьте осторожны. Во-первых, убедитесь, что процесс, который вы собираетесь убить, действительно тот, который вы хотите. Во-вторых, проверьте дважды — будьте осторожны и убедитесь, что целевой процесс — это тот, который вы хотите завершить. Приступить к прекращению процесса, как только вы будете удовлетворены.
Источник
Как убить процесс в Linux
Вы когда-нибудь сталкивались с ситуацией, когда вы запускали приложение, и внезапно, когда вы его использовали, оно перестает отвечать и неожиданно дает сбой? Вы пытаетесь запустить приложение еще раз, но ничего не происходит, потому что исходный процесс приложения никогда не завершается полностью.
Что ж, в какой-то момент это случилось со всеми нами, не так ли? Решение состоит в том, чтобы прервать или убить процесс приложения. Но как?
К счастью, в Linux есть несколько утилит, которые позволяют убивать ошибочные процессы.
В этой статье мы покажем вам, как использовать команды kill , killall и pkill для завершения процесса в Linux.
Основное различие между этими инструментами заключается в том, что kill завершает процессы на основе идентификатора процесса (PID), а команды killall и pkill завершают запущенные процессы на основе их имен и других атрибутов.
Обычные пользователи могут убивать свои собственные процессы, но не те, которые принадлежат другим пользователям, в то время как пользователь root может убивать все процессы.
Сигналы отключения системы
kill , killall и pkill отправляют заданный сигнал указанным процессам или группам процессов. Если сигнал не указан, каждый инструмент отправляет 15 ( TERM ).
Наиболее часто используемые сигналы:
- 1 (-HUP): перезагрузить процесс.
- 9 (-KILL): убить процесс.
- 15 (-TERM): чтобы корректно остановить процесс.
Сигналы можно указать тремя разными способами:
- используя число (например, -1)
- с префиксом «SIG» (например, -SIGHUP)
- без префикса «SIG» (например, -HUP).
Используйте параметр -l чтобы -l список всех доступных сигналов:
Описанные ниже шаги будут работать во всех дистрибутивах Linux.
Завершение процессов с помощью команды kill
Чтобы сначала завершить процесс с помощью команды kill , вам нужно найти PID процесса. Вы можете сделать это с помощью различных команд, таких как top , ps , pidof и pgrep .
Допустим, браузер Firefox перестал отвечать, и вам нужно убить процесс браузера. Чтобы узнать идентификатор процесса, используйте команду pidof :
Команда распечатает все процессы Firefox:
Как только вы узнаете, что Firefox обрабатывает PID, чтобы завершить их все, отправьте сигнал TERM :
Завершение процессов с помощью команды killall
Команда killall завершает работу всех программ, соответствующих указанному имени.
Используя тот же сценарий, что и раньше, вы можете убить процесс Firefox, набрав:
killall принимает несколько параметров, таких как отправка сигналов процессам, принадлежащим данному пользователю, сопоставление имен процессов с регулярными выражениями и время создания. Вы можете получить список всех опций, набрав killall (без аргументов) на вашем терминале.
Например, чтобы завершить все процессы, запущенные от имени пользователя sara, вы должны выполнить следующую команду:
Завершение процессов с помощью команды pkill
pkill завершает процессы, соответствующие шаблону, указанному в командной строке:
Название процесса не обязательно должно быть точным.
С помощью pkill вы также можете отправить сигнал процессам, принадлежащим данному пользователю. Чтобы убить только процессы firefox, принадлежащие пользователю sara, вы должны ввести:
Выводы
Завершение неотвечающих программ с помощью команд kill , killall и pkill — простая задача. Вам нужно только знать имя процесса или PID.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
7 способов убить не отвечающие программы в Linux
Программное обеспечение в Linux достаточно надежно, чтобы работать без проблем, но иногда, даже самые лучшие приложения могут зависнуть. Вместо того, чтобы ждать их сбоя, вы можете убить эти не отвечающие программы. На самом деле, существует так много способов убить программы для Linux, что вы можете оказаться избалованными выбором!
Если у вас возникают проблемы с приложением в Linux, вот несколько способов как её решить.
1. Убейте программу Linux, нажав «X»
Вы, наверное, уже пытались уйти и сделать горячий напиток. Если вы вернулись на свой компьютер и обнаружили, что приложение все еще зависло, вероятно, у него было достаточно времени, чтобы снова начать работать. Приложение, не отвечающее на запросы, обычно имеет серые кнопки или параметры, которые не работают. Вы также можете не перемещать окно приложения по экрану.
Итак, каково решение? Нажмите кнопку X в верхнем углу (слева или справа, в зависимости от графической оболочки в которой вы работаете и её настроек). Это должно остановить программу. Вы можете увидеть диалоговое окно с просьбой подождать или принудительно завершить процесс сейчас.
Если все пойдет по плану, некоторые дистрибутивы предложат вам отправить сообщение об ошибке.
2. Используйте системный монитор, чтобы убить процесс в Linux
Следующий вариант – открыть утилиту System Monitor вашей операционной системы Linux. Обычно это находится в меню «Системные инструменты» и отображает список запущенных процессов на вкладке «Процессы».
Чтобы закрыть не отвечающее приложение, просто выберите его и щелкните правой кнопкой мыши. Затем у вас есть три варианта:
- Остановить процесс: это приостанавливает процесс, позволяя продолжить его позже. Это не будет работать в большинстве случаев.
- Завершение процесса: правильный способ закрыть процесс, это безопасно завершит работу приложения, удаляя временные файлы в пути.
- Процесс уничтожения: это крайний вариант, и его следует использовать только в случае сбоя конечного процесса.
Лучше использовать их по порядку. Однако, если приложение регулярно зависает, вы можете использовать команду, которая, как вы знаете, работает.
3. Принудительно уничтожать процессы в Linux с помощью xkill
Другой вариант, который вы можете использовать – это xkill. Это инструмент принудительного уничтожения, предустановленный в Ubuntu, но вы можете установить его через терминал в других дистрибутивах, если это необходимо. При вызове xkill позволит вам закрыть любой процесс на рабочем столе. Установите его с помощью следующей команды:
sudo apt install xorg-xkill
Как только это будет сделано, запустите xkill, просто набрав
Ваш указатель мыши будет отображать крест (или череп). Щелкните левой кнопкой мыши на приложении-нарушителе, чтобы закрыть его.
Если невозможно закрыть приложение, не отвечающее на запросы, одним из этих методов, ориентированных на рабочий стол, решение может быть в командной строке…
4. Используйте команду «kill»
Если ваше приложение не отвечает, а приведенные выше предложения не работают (графический интерфейс может не отвечать), нажмите Ctrl+Alt+T, чтобы открыть Терминал.
Несколько параметров командной строки доступны, чтобы помочь вам закрыть ваше приложение. Более того, их можно использовать либо на вашем компьютере, либо подключившись через SSH с другого устройства.
Команда kill может использоваться здесь, но сначала требуется идентификатор процесса. Вы можете найти это, запустив команду, запрашивающую приложение для его идентификатора процесса:
ps aux | grep [process name]
В результате отобразится идентификатор процесса. Это может быть использовано следующим образом:
kill [process ID]
Обратите внимание, что вам может понадобиться добавить команду с помощью sudo.
5. Используйте «pgrep» и «pkill»
Что если вы не знаете или не можете найти идентификатор процесса? Вот тут и появляется команда pkill. Вместо идентификатора процесса просто используйте pkill вместе с именем процесса:
pkill [process name]
Кроме того, вы можете использовать команду pgrep, чтобы найти идентификатор процесса:
pgrep [process name]
… И после этого используйте pkill с идентификатором процесса.
pkill [process ID]
Как и в случае команды kill, процесс должен завершиться в течение 5 секунд.
6. Убить всё с помощью «killall»
Не повезло с kill или pkill? Пришло время использовать ядерную опцию: killall.
К счастью, это не так разрушительно, как могло бы быть. Команда killall завершит работу всех экземпляров указанной программы. Таким образом, вместо того, чтобы убивать одно окно Firefox, следующая команда завершит их все:
Все, что вам нужно, это имя процесса и команда killall (возможно, с sudo, если этого требует ваша система).
killall [process name]
Естественно, вы должны использовать эту команду только при необходимости. Это не подходит для большинства не отвечающих программных ситуаций.
7. Создайте комбинацию клавиш Force-Kill
Хотите сэкономить время на закрытие не отвечающего программного обеспечения? Наилучшим вариантом является создание сочетания клавиш. Это даст вам немедленную возможность закрыть приложение, но для этого потребуется xkill.
В Ubuntu откройте Параметры > Устройства > Клавиатура и пролистайте список Комбинации клавиш в самый низ, где вы увидите «+». Нажимаем на «+», чтобы создать новый ярлык. В поля Имя и Команда введите «xkill», затем нажмите кнопку Установить комбинацию клавиш и введите нужную вам комбинацию и нажмите кнопку Добавить. Готово.
В следующий раз, когда вам нужно будет закрыть приложение, просто используйте сочетание клавиш. Указатель мыши станет X, и вы можете щелкнуть в любом месте приложения, которое хотите закрыть.
Избегайте не отвечающего программного обеспечения: обновите свое оборудование
Не отвечающие приложения регулярно вызывают проблемы? Возможно, вы могли бы получить выгоду от внесения некоторых изменений в свой компьютер с Linux.
Установка дополнительной оперативной памяти – это лучший способ повысить производительность вашего компьютера и возможно, именно это вам и нужно, чтобы эти темпераментные приложения перестали отвечать на запросы в будущем.
Итак, в следующий раз, когда приложение или утилита Linux зависнет и перестанет отвечать на запросы, все, что вам нужно сделать, это применить одно из следующих решений:
- Нажмите X в углу.
- Используйте системный монитор.
- Используйте приложение xkill.
- Используйте команду kill.
- Закройте приложения с помощью pkill.
- Используйте killall, чтобы закрыть программное обеспечение.
- Создайте сочетание клавиш.
Если ни одно из этих решений не работает и вы регулярно сталкиваетесь с не отвечающими приложениями в Linux, рассмотрите возможность перехода на облегченную операционную систему Linux.
Источник