Команды A-Z

Как убить или завершить процесс Linux полное руководство

Как убить или завершить процесс Linux полное руководство

Многопроцессорные операционные системы, такие как Linux и BSD, используют несколько методов для максимального использования ЦП. Процесс - это просто выполняемая программа. Поскольку одновременно будет запущено более одного процесса Linux, управление процессами в Linux чрезвычайно важно. Пользователи часто сталкиваются с такими проблемами, как ограничение ресурсов ЦП при запуске слишком большого количества программ. Подобные ситуации возникают, когда ЦП не справляется с растущим числом процессов. Хотя это не зависит полностью от мощности вашего процессора, работа с зависшими или зомби-процессами может быть довольно неприятной. Чтобы помочь вам уменьшить такие случаи, мы в общих чертах описываем некоторые стандартные способы уничтожения этих процессов.

Освойте управление неотвечающими процессами в Linux


Вы узнаете несколько способов завершить процесс Linux, который вообще не отвечает. Если вы работаете в Windows, возможно, вы знакомы с Ctrl + Alt + Delete. Точно так же у пользователей Mac есть метод Command + Option + Escape для уничтожения замороженных процессов. Linux гораздо более универсален, чем его аналоги, и предлагает более одного метода для борьбы с мертвыми / не отвечающими процессами.

Различные методы уничтожения мертвого процесса Linux


В основном мы рассмотрим два метода уничтожения зомби-процессов. Мы будем использовать терминал Linux для первого метода. Для этого нам сначала нужно определить идентификатор процесса. После успешного получения мы можем использовать этот PID, чтобы убить программу, отправив определенные сигналы этому PID.

Вы также узнаете, как выполнять такие задания уничтожения Linux из графического пользовательского интерфейса или X-окна. Мы собираемся использовать 'Системный монитор' приложение, доступное в Ubuntu для этого. Хотя это приложение GNOME, аналогичные инструменты доступны для других окружений рабочего стола Linux.

Завершить неотвечающий процесс из командной строки


Есть несколько инструментов для завершения неотвечающего или зависшего процесса из командной строки, в том числе убийство, pkill, а также убить всех. Эти команды работают, отправляя определенные сигналы этим неотвечающим процессам. Вам понадобится идентификатор процесса или PID информацию, чтобы вы могли послать им требуемый завершающий сигнал.

PID или идентификатор процесса - это уникальный номер, который идентифицирует процесс. Они создаются ядром Linux во время выполнения, а планировщик процессов контролирует их активность ЦП. Итак, всякий раз, когда вы вызываете приложение, ядро ​​сначала порождает необходимые процессы и присваивает им эти уникальные значения PID. С процессом может быть связано несколько PID. Более того, у каждого процесса есть единственный родительский процесс с уникальным PPID (Parent Process ID).

Итак, если вы можете узнать этот PPID, вы сможете отправить сигнал уничтожения с помощью программ, предназначенных для этой цели. Ниже вы узнаете, как проверить запущенные процессы в Linux и определить их PPID из терминала.

Узнайте информацию о PPID


Вы можете узнать PPID процесса с помощью нескольких команд управления процессами в Linux, таких как пидоф, pstree, а также pgrep. Давайте рассмотрим их один за другим и посмотрим, как получить PID процесса Linux.

Метод 1. Использование команды ps


Команда ps в Linux отображает все запущенные процессы вместе с другой связанной с процессами информацией, такой как PID в терминале. Мы можем использовать эту команду, чтобы вывести список всех процессов, а затем отфильтровать конкретный процесс с помощью команд Linux grep. Он должен показать нам интересующую нас информацию об идентификаторе процесса.

$ нано> / dev / null &
$ ps aux | grep "нано"

Сначала мы вызвали текстовый редактор Linux в фоновом режиме. Затем мы использовали команду ps вместе с командой grep, чтобы узнать PPID этого редактора. Вывод может содержать несколько идентификаторов процессов, но нас интересует только первый, так как это наш PPID. Мы также можем использовать команду Linux awk, чтобы узнать эту информацию, как показано ниже.

$ ps aux | awk '/ nano / print $ 2'

Эта команда более гибкая, так как она подавляет всю не относящуюся к делу информацию. Будет показана только та информация PPID, которую мы ищем.

Метод 2: использование команды pstree


Команда pstree предоставляет нам древовидное представление всех запущенных процессов. Он обеспечивает графическое представление списка задач Linux из окна терминала. Вы можете просмотреть PPID, а также всю информацию PID процесса, используя эту команду. Ознакомьтесь с приведенными ниже примерами, чтобы узнать, как использовать pstree для поиска PPID определенного процесса.

$ нано> / dev / null &
$ pstree -p | grep 'nano' $ pstree -p | awk '/ nano / print $ NF'

Во-первых, мы запустили процесс в фоновом режиме с помощью первой команды. Вторая команда затем извлекает PPID этого процесса с помощью команды grep в Linux. Наконец, третья команда показывает нам, как получить это значение с помощью команды awk.

Метод 3: использование команды pgrep


Команда pgrep - одна из самых простых команд управления процессами в Linux. Он проверяет список всех запущенных процессов и выводит PPID данного процесса на стандартный вывод или в терминал в нашем случае. Он работает, выполняя сопоставление регулярных выражений, и очень хорошо подходит для написания сценариев оболочки Linux.

$ нано> / dev / null &
$ pgrep 'нано'

Мы создали нано-процесс аналогично предыдущим примерам. Затем мы получили его PPID с помощью команды pgrep. Как только мы получим это значение, мы можем очень легко выполнить задание уничтожения Linux.

Метод 4: Использование команды pidof


Команда pidof - еще один простой, но полезный способ определения PPID процесса Linux. Он отображает как PPID, так и все другие PID, связанные с процессом. Ознакомьтесь с приведенным ниже исследованием, чтобы узнать, как использовать это на практике.

$ нано> / dev / null &
$ пидоф нано $ пидоф -с нано

При использовании команды pidof для проверки запущенных процессов в Linux вы часто увидите несколько PID. Обычно в таких случаях первым или последним числом является PPID, в зависимости от того, в порядке возрастания или в порядке убывания. Вы можете использовать -s вариант pidof для смягчения этого. Будет отображаться только значение PPID.

Метод 5: Использование верхней команды


Команда top обеспечивает просмотр в реальном времени всех запущенных процессов в Unix-подобных операционных системах. Вы можете использовать это, чтобы отобразить список задач Linux в вашем терминале и узнать информацию о PID определенного процесса.

$ топ

Используйте следующие команды, чтобы получить PPID определенного процесса из выходных данных верхней команды.

$ нано> / dev / null &
$ top -n1 -b | grep 'nano' $ top -n1 -b | awk '/ nano / print $ 1'

Поскольку top обеспечивает вывод в реальном времени вместо выгрузки статических данных в терминал, мы использовали -n1 а также возможность распечатать статический вывод. Затем вы можете получить информацию о PPID с помощью команды grep или awk в Linux.

Убейте не отвечающий процесс Linux


Вы можете использовать любой из вышеперечисленных методов для получения PPID неотвечающего процесса. Как только вы его получите, пора полностью убить процесс. Есть несколько команд, которые позволяют нам это делать, например убийство, pkill, а также убить всех. Мы посмотрим, как они работают, один за другим в следующих разделах.

Метод 1: использование команды kill


Команда kill широко используется администраторами Linux благодаря своей простоте и надежным действиям. Принимает PID процесса и сигнал. Ядро убивает / останавливает выполнение процесса на основе этого сигнала. Вы можете использовать следующую команду, чтобы просмотреть все доступные сигналы для команды kill.

$ kill -l

Как видите, kill предлагает 64 различных сигнала. Однако в этом руководстве мы обсудим только два из них. Это сигнал 9 (SIGKILL) и сигнал 15 (SIGTERM). SIGTERM или signal 15 - безопасный метод уничтожения неотвечающего процесса. SIGKILL или signal 9, с другой стороны, принудительно убивают процесс Linux.

$ kill -9 8631 $ kill -KILL 8631

Вышеупомянутые команды эквивалентны, и они заставят убить процесс с PID 8631. Это PPID процесса "нано" в моей системе. Замените это на PID неотвечающего процесса в вашей системе.

$ kill -15 8631 $ kill -TERM 8631

Вышеупомянутые команды также эквивалентны и изящно завершат процесс. Вот почему может пройти некоторое время, прежде чем процесс будет остановлен. Кроме того, вам может потребоваться добавить судо перед командой kill, если процесс принадлежит другому пользователю.

Метод 2: использование команды pkill


Команда pkill - одна из самых универсальных команд управления процессами в Linux. Это позволяет нам убить неотвечающий процесс на основе его имени, PID, владельца и других атрибутов времени выполнения. Это идеальный инструмент для начинающих пользователей или людей, не знакомых со многими стандартными командами терминала.

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

Вы можете использовать любую из вышеперечисленных команд pkill для уничтожения зомби / неотвечающего процесса в Linux. Использовать вариант, если вам нужно подтверждение об уничтожении Linux. Команда pkill также позволяет пользователям отправлять определенные завершающие сигналы.

Метод 3: Использование команды killall


Команда killall позволяет пользователям убивать неотвечающие процессы на основе их имен. Его легче использовать, но он может создать проблемы, если вы не будете осторожны. Поскольку killall завершает процессы на основе имен, всегда есть вероятность, что вы случайно завершите процесс. Например, если в вашей системе доступны разные версии nano, первый пример убьет их всех.

$ killall nano $ killall --verbose nano $ killall - интерактивное нано $ killall --сигнал KILL nano

В первом примере показано базовое использование команды killall в Linux. Вторая команда сообщит, было ли задание уничтожения успешным или нет, а третья команда запросит у пользователя подтверждение перед тем, как убить процесс. По умолчанию killall использует сигнал SIGTERM для уничтожения процессов. Однако вы можете указать сигнал вручную, как показано в последнем примере.

Метод 4: использование удобных однострочников


Истинная красота Linux заключается в том, что он позволяет пользователям создавать сложные комбинации команд в зависимости от их потребностей. Чтобы продемонстрировать это, мы выделили несколько однострочников в разделе.

$ нано> / dev / null &
$ kill -9 $ (pgrep nano) $ ps aux | grep -e 'nano' | awk 'print $ 2' | xargs kill -9

В первом примере мы использовали интерполяцию оболочки, чтобы передать PID процесса 'nano' команде Linux kill. Во втором примере используется несколько повседневных команд терминала и перенаправление ввода-вывода, чтобы остановить процесс. Вы можете создавать свои собственные изящные однострочные сообщения, когда освоитесь с терминалом Linux.

Метод 5: уничтожение нескольких процессов с помощью сценариев оболочки Linux


Иногда пользователи могут захотеть завершить более одного процесса. Мы можем легко автоматизировать такие задачи, написав простые сценарии оболочки. Если вам интересна эта тема, ознакомьтесь с нашим предыдущим руководством по сценариям оболочки Linux. Следующий скрипт получит PPID процессов, которые вы хотите убить, а затем завершит их, используя сигналы уничтожения.

$ nano proc-убийца.ш
#!/ usr / bin / env bash для профессионалов в "$ @" do pid = $ (pgrep $ pro | head -1) echo $ pid comm = "kill -9 $ pid" eval $ comm done

Теперь сохраните этот файл и добавьте разрешение на выполнение, выполнив следующую команду.

$ chmod + x proc-убийца.ш

Теперь вы можете передать этому сценарию имя процессов, которые вы хотите завершить.

$ ./ proc-killer.sh nano gedit vlc

Просто замените аргументы именами не отвечающих процессов Linux в вашей системе.

Завершить неотвечающий процесс из графического интерфейса


Вы также можете завершить неотвечающий процесс из графического пользовательского интерфейса или X-окна. Мы обсудим два метода для этого в следующем разделе.

Метод 1: Использование приложения xkill


Современные дистрибутивы Linux используют графическое окно X для предоставления пользователям элегантного графического интерфейса. Существует простой инструмент под названием xkill, который позволяет пользователям закрывать неотвечающее окно графического интерфейса пользователя. Это возможно, поскольку в Linux окно заголовка приложения отделено от самого приложения.

Просто перейдите в эмулятор терминала Linux и введите xkill. Он превратит ваш курсор мыши в кнопку X, которую можно использовать для закрытия любого окна графического интерфейса.

$ xkill

Теперь все, что вам нужно сделать, это просто щелкнуть по строке окна не отвечающего приложения, и оно будет отключено и мгновенно исчезнет.

Метод 2: использование приложения системного монитора в Ubuntu


Большинство распространенных дистрибутивов Linux поставляются с инструментами мониторинга графического интерфейса пользователя, которые позволяют пользователям графически завершить зависший процесс Linux. Например, приложение System Monitor в Ubuntu позволит нам интуитивно завершить процесс, не отвечающий на запросы. Вы можете просто выбрать мертвый процесс из списка процессов и убить его, щелкнув правой кнопкой мыши по процессу и выбрав опцию kill.

Есть еще много альтернатив этому приложению, и мы уверены, что вы легко найдете одну для своего дистрибутива или среды рабочего стола.

Конечные мысли


Поскольку управление процессами в Linux очень универсально, пользователи часто разочаровываются, имея дело с неотвечающими процессами. Вот почему наши редакторы обрисовали в этом руководстве все возможные способы завершения мертвого процесса Linux. Прочитав это, вы сможете убить любые неотвечающие процессы из командной строки или из графического интерфейса. Вы также можете использовать любую из наших однострочных команд, чтобы справиться с такими неприятностями в кратчайшие сроки. Более того, вы даже можете убить более одного процесса, используя наш простой сценарий оболочки. Надеюсь, вы получили необходимую информацию из нашего руководства.

Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...