- Завершение процессов в Linux
- Типы сигналов для завершения процессов
- Завершаем процессы в Linux
- Способ 1: «Системный монитор»
- Способ 2: Команда kill
- Способ 3: Команда pkill
- Способ 4: Команда killall
- Как убить или прекратить процесс Linux: ультимативное руководство.
- Мастер управления неотзывчивыми процессами в Linux
- Различные методы убийства мертвого процесса Linux
- Завершить неотвечающий процесс из командной строки
- Узнайте информацию о PPID
- Способ 1: использование команды ps
- Способ 2: Использование команды pstree
- Способ 3: использование команды pgrep
- Способ 4: Использование команды pidof
- Способ 5: использование команды top
- Убить не отвечающий процесс Linux
- Способ 1: использование команды kill
- Способ 2: использование команды pkill
- Способ 3: использование команды killall
- Способ 4: использование удобных однострочников
- Способ 5: уничтожение нескольких процессов с помощью шелл-скриптов Linux
- Завершить неотвечающий процесс из графического интерфейса
- Способ 1: использование приложения xkill
- Способ 2. Использование приложения System Monitor в Ubuntu
- Послесловие
Завершение процессов в Linux
Каждая программа, утилита или какой-то другой элемент операционной системы Linux реализовывается в виде одного или нескольких процессов, которые функционируют в фоновом либо активном режиме. Каждый такой процесс потребляет определенное количество системных ресурсов и действует отведенный промежуток времени. Иногда случаются ситуации, требующие немедленного завершения («убийства») такой операции, что связано с ненадобностью ее выполнения или возникновением ошибок. В рамках сегодняшней статьи мы хотим поговорить о методах осуществления этой задачи.
Типы сигналов для завершения процессов
Для начала затронем тему алгоритмов завершения процессов в дистрибутивах, основанных на Linux. Действие системных средств зависит от посылаемых сигналов, которые имеют разные значения и заставляют выполнять определенную последовательность задач. Ниже будут представлены способы, где можно указывать тип сигнала для «убийства» операции, поэтому мы рекомендуем изучить их все, чтобы разобраться в правильности применения.
- SIGINT — стандартный сигнал, использующийся и в графических оболочках. При его отправлении процесс сохраняет все изменения, завершает выполняемые действия и только потом отключается. Если вы работаете через «Терминал», используйте комбинацию клавиш Ctrl + C, чтобы быстро «убить» текущий процесс.
- SIGQUIT — практически не отличается от предыдущего сигнала, но при его отправке программа уже сама решает, стоит ли завершать работу. При этом создается дамп памяти, что может быть полезно определенным пользователям. Это второй и последний сигнал, который можно послать сочетанием клавиш при взаимодействии с «Терминалом». Для этого используется комбинация Ctrl + /.
- SIGHUP — используется для разрыва связи с «Терминалом». Рекомендуется задействовать этот сигнал, если требуется прервать соединение с интернетом.
- SIGTERM — сразу же удаляет процесс, но его дочерние опции продолжают выполняться до полного завершения операций, а после производится освобождение системных ресурсов.
- SIGKILL — аналогичный предыдущему сигнал, но при этом оставшиеся дочерние задачи не прекращают свое функционирование.
Теперь вы знаете обо всех доступных сигналах, использующихся при «убийстве» процессов в разных дистрибутивах Linux. Используйте их вместе с приведенными в методах ниже командами в качестве аргумента.
Завершаем процессы в Linux
Существуют разные системные средства, позволяющие «убить» какой-либо процесс. Иногда для этого приходится узнавать его идентификатор, а в других ситуациях достаточно только названия. Далее мы предлагаем детально изучить все представленные методы, чтобы найти оптимальный для себя и выполнять его при необходимости, учитывая описанные ранее сигналы.
Способ 1: «Системный монитор»
Начнем с самого простого, но менее вариативного метода, который осуществляется через программу графического интерфейса и будет полезен тем пользователям, кто просто хочет завершить процесс, не прибегая при этом к запуску терминальных команд. Рассмотрим эту операцию на стандартной оболочке дистрибутива Ubuntu.
- Перейдите в меню «Показать приложения», где отыщите «Системный монитор» и запустите его, кликнув по значку левой кнопкой мыши.
Дополнительно вы можете переместиться в свойства объекта через контекстное меню, чтобы посмотреть всю информацию о нем.
Щелкните правой кнопкой мыши по строке и выберите пункт «Завершить». Это же действие выполняется через горячую клавиш Ctrl + E. Еще внизу имеется кнопка, позволяющая завершить процесс без вызова контекстного меню.
Если же операция не завершилась по каким-либо причинам, задействуйте опцию «Убить».
В преимущественном большинстве графических оболочек системный монитор реализован похожим образом, поэтому каких-то проблем с пониманием интерфейса возникнуть не должно.
Способ 2: Команда kill
Для применения команды kill потребуется знание PID (идентификатора процесса), поскольку именно так осуществляется применение аргументов. В статье ниже мы детально описали операцию просмотра списка процессов для получения различной информации. Обязательно ознакомьтесь с ней перед выполнением следующей инструкции.
Далее остается только запустить «Терминал» и задействовать упомянутую команду. Для начала изучите ее простой синтаксис: kill -сигнал pid_процесса . Теперь давайте рассмотрим пример «убийства».
- Откройте меню приложений и запустите «Терминал».
Введите простую команду ps aux | grep name для получения информации об указанном процессе, где name — имя желаемой программы.
В отобразившемся результате отыщите главный PID и запомните его.
Введите kill PID для завершения процесса через сигнал SIGTERM. Вместо PID вам нужно написать определенный ранее номер идентификатора.
Теперь вы можете снова использовать ps aux | grep name , чтобы проверить, была ли завершена операция.
То же самое действие по «убийству» осуществляется и через другой аргумент путем ввода kill -TERM .
Если приведенные выше команды не принесли никакого результата, потребуется обозначить сигнал SIGKILL, вставив команду kill -KILL .
Учтите, что некоторые процессы запускаются от имени суперпользователя, соответственно, для их завершения требуются привилегии. Если при попытке ввода kill вы получаете информацию «Отказано в доступе», вводите перед основной командой sudo, чтобы получилось sudo kill .
Способ 3: Команда pkill
Следующая консольная утилита называется pkill и является модернизированной версией предыдущей команды. Здесь все реализовано точно по такому же образу, но вместо PID от пользователя требуется вводить название процесса.
- Для отправки сигнала SIGTERM используйте pkill + название процесса .
После вы можете убедиться, что операция была успешно завершена.
Задайте вручную тип сигнала, введя такую форму pkill -TERM ping , где -TERM — необходимый сигнал.
Используйте pgrep для определения того, что процесс больше не выполняется, если вы не хотите задействовать ps
Способ 4: Команда killall
В качестве последнего способа мы рассмотрим команду под названием killall. Ее функционирование и синтаксис выглядят точно так же, как у всех предыдущих утилит, поэтому останавливаться на этом мы не будем. Только уточним, что эта команда позволяет завершить все процессы с указанным названием разом и может быть использована в разных случаях.
Теперь вы знаете все о завершении процессов в Linux. Перед выполнением методов убедитесь, что принудительное «убийство» не приведет к системным сбоям. Если же ни один вариант не позволил полностью избавиться от процесса, попробуйте просто перезагрузить компьютер или удалить софт, связанный с этой опцией.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Как убить или прекратить процесс Linux: ультимативное руководство.
Многопроцессорные операционные системы, такие как Linux и BSD, используют несколько методов для максимальной загрузки ЦП. Процесс — это просто исполняемая программа. Поскольку в любой момент времени в Linux запущено значительно больше одного процесса, управление ими чрезвычайно важно. Пользователи регулярно сталкиваются с такими проблемами, как ограничение ресурсов процессора при запуске слишком большого количества программ. Подобные ситуации возникают, когда процессор не справляется с растущим числом процессов. Хотя это не полностью зависит от мощности вашего процессора, работа с зависшими процессами или процессами зомби может быть довольно неприятной. Чтобы облегчить вам жизнь в таких случаях, мы описываем здесь некоторые стандартные способы уничтожения таких процессов.
Мастер управления неотзывчивыми процессами в Linux
Вы узнаете несколько способов как в Linux завершить процесс, который не подает признаков жизни. Если вы юзали Windows, скорее всего вам знаком шорткат Ctrl + Alt + Delete. Точно так же пользователи Mac имеют метод Command + Option + Escape для уничтожения замороженных процессов. Linux гораздо более универсален, чем его аналоги, и предлагает более одного метода для устранения мертвых процессов.
Различные методы убийства мертвого процесса Linux
В основном мы опишем два метода убийства зомби-процессов. Мы будем использовать терминал Linux для первого метода. Для этого сначала нужно идентифицировать id процесса, он же PID, от английского process identifier – идентификатор процесса. После успешного получения мы сможем использовать этот PID, посылая сигнал для уничтожения программы ориентируясь на номер-идентификатор.
Вы также узнаете, как обкашливать такие вопросики, используя графический интерфейс пользователя. Для этого мы собираемся использовать приложение «Системный монитор», доступное в Ubuntu. Хотя это приложение GNOME, аналогичные инструменты доступны и для других сред Linux.
Завершить неотвечающий процесс из командной строки
Существует несколько инструментов для завершения неотвечающего или зависшего процесса из командной строки, включая kill, pkill и killall. Эти команды работают, посылая определенные сигналы не отвечающим процессам. Вам понадобится PID, чтобы вы могли отправить им требуемый завершающий сигнал.
PID или идентификатор процесса — это уникальный номер, который идентифицирует процесс. Эти номера генерируются ядром Linux непосредственно во время выполнения процессов, и диспетчер операционной системы управляет их процессорной активностью. Поэтому, когда вы вызываете приложение, ядро сначала запускает необходимые процессы и присваивает им эти уникальные значения PID. С процессом может быть связано несколько PID. Более того, у каждого процесса есть один родительский процесс с уникальным PPID (идентификатор родительского процесса).
Итак, если вы сможете узнать этот PPID, то сможете отправлять сигнал уничтожения с помощью программ, разработанных для этой цели. Ниже вы узнаете, как проверить запущенные процессы в Linux и определить их PPID из терминала.
Узнайте информацию о PPID
Вы можете узнать PPID процесса, используя несколько команд управления процессами в Linux, таких как pidof, pstree и pgrep. Давайте рассмотрим их одну за другой и посмотрим, как получить PID процесса Linux.
Способ 1: использование команды ps
Команда ps в Linux отображает все запущенные процессы вместе с другой информацией о процессах, такой как PID, в терминале. Мы можем использовать эту команду для вывода списка всех процессов, а затем отфильтровать определенный процесс с помощью команды grep в Linux. Она должна показать нам номер идентификатора процесса, который нам и требуется.
Давайте подробнее поговорим о том, что происходит на демонстрации выше. Во-первых, мы запустили в фоновом режиме текстовый редактор Nano. Затем мы использовали команду ps вместе с командой grep, чтобы узнать PPID этого редактора. Вывод может содержать несколько идентификаторов процессов, но нас интересует только первый, поскольку это наш PPID. Мы также можем использовать команду Linux awk, чтобы узнать эту информацию, как показано ниже.
Эта команда более гибкая, так как она отфильтрует всю несущественную информацию, и покажет только номер PPID, который мы ищем.
Способ 2: Использование команды pstree
Команда pstree предоставляет нам древовидное представление всех запущенных процессов. Она предоставляет графическое представление списка задач Linux из окна терминала. С помощью этой команды вы можете просмотреть PPID или, при желании, информацию о всех PID процесса. Посмотрите приведенные ниже примеры, чтобы узнать, как использовать pstree для поиска PPID определенного процесса.
Теперь подробности. Во-первых, мы породили процесс в фоновом режиме с помощью первой команды. Затем вторая команда получает PPID этого процесса с помощью команды grep в Linux. Наконец, третья команда показывает нам, как получить это же значение с помощью команды awk.
Способ 3: использование команды pgrep
Команда pgrep является одной из самых простых команд управления процессами в Linux. Он проверяет список всех запущенных процессов и выводит PPID процесса. Она работает путем сопоставления регулярных выражений и очень хорошо подходит для написания шелл-скриптов Linux.
Мы породили nano-процесс аналогично предыдущим примерам. Затем мы получили его PPID с помощью команды pgrep. Как только мы получим это значение, мы сможем выполнить задачу уничтожения мертвого процесса максимально легко.
Способ 4: Использование команды pidof
Команда pidof — это еще один простой, но полезный способ определения PPID процесса Linux. Он отображает как PPID, так и все другие PID, связанные с процессом. Ознакомьтесь с приведенной ниже демонстрацией, чтобы увидеть, как использовать ее на практике.
При использовании команды pidof для проверки запущенных процессов в Linux вы часто будете видеть несколько PID. Обычно в таких случаях первый или последний номер — это PPID, в зависимости от того, находятся они в порядке возрастания или в порядке убывания. Вы можете использовать опцию -s pidof, чтобы избежать этого. Так будет отображено только значение PPID.
Способ 5: использование команды top
Команда top обеспечивает представление в реальном времени всех запущенных процессов в Unix-подобных операционных системах. Вы можете использовать её, чтобы отобразить список задач Linux в вашем терминале и узнать информацию о PID определенного процесса.
Используйте следующие команды для получения PPID определенного процесса из выходных данных команды, приведённой выше.
Поскольку top обеспечивает вывод в реальном времени вместо выгрузки статических данных на экран, мы использовали опцию -n1 и -b для получения статического вывода. Затем вы можете получить информацию о PPID с помощью команды grep или awk.
Убить не отвечающий процесс Linux
Вы можете использовать любой из вышеперечисленных методов, чтобы получить PPID не отвечающего процесса. Как только вы его заполучите, придет время полностью убить процесс. Есть несколько команд, которые позволяют нам сделать это, таких как kill, pkill и killall. В следующих разделах мы по очереди рассмотрим действие каждой.
Способ 1: использование команды kill
Простая и надежная как лом, команда kill, благодаря этим своим свойствам, широко используется администраторами Linux. Ей требуется только PID процесса и сигнал. Ядро убивает / останавливает выполнение процесса на основе этого сигнала. Вы можете использовать следующую команду, чтобы просмотреть все доступные сигналы для команды kill.
Как видите, kill предлагает 64 различных сигнала. Однако в этом руководстве мы обсудим только два из них. Это сигнал 9 (SIGKILL) и сигнал 15 (SIGTERM). SIGTERM или сигнал 15 — это безопасный метод уничтожения не отвечающего процесса. SIGKILL или сигнал 9, с другой стороны, принудительно убивает процесс Linux.
Вышеприведенные команды эквивалентны, и они принудительно завершат процесс с PID 8631. Это PPID процесса «nano» в моей системе. Замените его на PID не отвечающего процесса в вашей системе.
Вышеприведенные команды также эквивалентны и будут корректно завершать процесс. Вот почему может пройти некоторое время, прежде чем процесс будет остановлен. Более того, вам может понадобиться добавить sudo перед командой kill, если процесс принадлежит другому пользователю.
Способ 2: использование команды pkill
Команда pkill является одной из самых универсальных команд управления процессами в Linux. Она позволяет нам уничтожать неотвечающий процесс на основе его имени, PID, владельца или других атрибутов. Это идеальный инструмент для начинающих пользователей или людей, которые не знакомы со многими стандартными командами терминала.
Вы можете использовать любую из перечисленных выше команд pkill для уничтожения зомби-процесса в Linux. Также команда pkill позволяет вам отправлять определенные завершающие сигналы.
Способ 3: использование команды killall
Команда killall позволяет пользователям уничтожать неотвечающие процессы на основе их имен. Так значительно проще, но, при не осторожном использовании, может вызвать серьёзные проблемы. Так как killall завершает процессы, основанные на именах, всегда есть шанс, что вы в конечном итоге убьете процесс случайно. Например, если в вашей системе доступны разные версии nano, первая команда в демонстрации ниже уничтожит их все.
В первом примере показано базовое использование команды killall в Linux. Вторая команда сообщит, успешно ли выполнено задание на уничтожение, а третья команда запросит подтверждение у пользователя, прежде чем убить процесс. По умолчанию killall использует сигнал SIGTERM для процессов уничтожения. Однако вы можете указать сигнал вручную, как показано в последнем примере.
Способ 4: использование удобных однострочников
Истинная красота Linux заключается в том, что он позволяет пользователям создавать сложные комбинации команд в зависимости от их потребностей. Чтобы продемонстрировать это, мы предлагаем вам ознакомиться с несколькими однострочниками в разделе ниже.
Теперь подробнее, в первом примере мы использовали интерполяцию оболочки для передачи PID процесса «nano» команде Linux kill. Второй пример использует несколько повседневных команд терминала и перенаправление ввода / вывода, чтобы завершить процесс. Вы сможете создавать свои собственные изящные однострочники, когда лучше освоитесь с терминалом Linux.
Способ 5: уничтожение нескольких процессов с помощью шелл-скриптов Linux
Иногда пользователи могут захотеть завершить более одного процесса. Мы можем легко автоматизировать такие задачи, написав простые сценарии оболочки. Следующий скрипт извлекает PPID процессов, которые вы хотите уничтожить, а затем завершает их, используя сигналы уничтожения.
Теперь сохраните этот файл и добавьте разрешение на выполнение, введя команду ниже.
Теперь вы можете передать этому сценарию имена процессов, которые вы хотите завершить.
Просто замените аргументы именами не отвечающих процессов Linux в вашей системе.
Завершить неотвечающий процесс из графического интерфейса
Вы также можете завершить неотвечающий процесс из GUI или window X. Мы обсудим два способа сделать это в следующем разделе.
Способ 1: использование приложения xkill
Современные дистрибутивы Linux используют оконную систему X window для предоставления конечному пользователю элегантного графического интерфейса. Существует простой инструмент под названием xkill, который позволяет юзерам закрывать неотвечающее окно графического интерфейса. Это возможно, поскольку в Linux окно заголовка приложения отделено от самого приложения.
Просто зайдите в эмулятор терминала Linux и введите xkill. Он превратит ваш курсор мыши в кнопку X, которую можно использовать для уничтожения любого окна GUI.
Теперь все, что вам нужно сделать, это просто щелкнуть по панели окна не отвечающего приложения, и оно будет убито и мгновенно исчезнет.
Способ 2. Использование приложения System Monitor в Ubuntu
Большинство основных дистрибутивов Linux поставляются с какими-то инструментами мониторинга графического интерфейса, которые позволяют пользователям «графически» завершать зависший процесс Linux. Например, приложение System Monitor в Ubuntu позволит нам интуитивно прекратить не отвечающий процесс. Вы можете просто выбрать мертвый процесс из списка процессов и уничтожить его, щелкнув правой кнопкой мыши по процессу и выбрав опцию уничтожения.
Существует еще много альтернатив этому приложению, и мы уверены, что вы легко сможете найти что-то подобное для своего дистрибутив.
Послесловие
Поскольку управление процессами в Linux очень универсально, пользователи часто расстраиваются, когда вдруг сталкиваются с не отвечающими процессами. Вот почему в этом руководстве наши редакторы обрисовали в общих чертах все возможные способы завершения мертвого процесса в Linux. Прочитав эту статью, вы сможете убить любые неотвечающие процессы из командной строки или из графического интерфейса. Вы также можете использовать любую из наших однострочных команд для устранения таких неприятностей в кратчайшие сроки. Более того, вы можете даже убить более одного процесса, используя наш простой шелл-скрипт. Надеюсь, что из нашего очерка вы получили всю необходимую информацию по этому вопросу.
Источник