5 способов убить программу linux

Теперь вы знаете, как завершить программу в Linux

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

  1. Щелкните X в углу
  2. Используйте системный монитор
  3. Используйте приложение xkill
  4. Используйте команду kill
  5. Закройте приложения Linux с помощью pkill
  6. Используйте killall, чтобы закрыть программное обеспечение
  7. Создайте сочетание клавиш для автоматизации удаления приложения в Linux

Если вы регулярно сталкиваетесь с зависанием приложений Linux, почему бы не подумать о переходе на облегченную операционную систему Linux?

Как убить процесс в Linux с помощью терминала

Теперь мы готовы двигаться дальше и изучать различные способы использования команды kill. Чтобы продолжить, войдите на свой VPS-сервер с помощью SSH.

Использование команды kill с PID

Чтобы убить процесс с определённым PID, используйте следующую команду:

kill 63772

Здесь 63772 – это идентификатор процесса, который мы хотим завершить. Поскольку сигнал не указан, это будет сигнал SIGTERM. Иногда это может не сработать; в этом случае вам, возможно, придётся принудительно убить процесс.

В таких случаях вы можете использовать формат команды, как показано ниже:

kill  pid

Ниже приведён пример команды для принудительного завершения процесса:

kill SIGKILL 63772

Точно так же вы можете использовать сокращённый вариант команды для завершения процесса Linux:

kill -9 63772

Замените 63772 соответствующим pid для прекращения процесса.

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

С помощью одной и той же команды вы можете убить несколько процессов. Синтаксис этой команды будет следующим:

kill -9 pid1 pid2 pid3

Вот пример, показывающий, как это будет выглядеть на практике:

kill -9 63772 45116 23465

Как убить процесс в Linux с помощью команды Pkill

Pkill – разновидность команды kill, в которой вы можете указать имя процесса или паттерн для его поиска:

pkill chrome

Приведенная выше команда завершит работу браузера Chrome. Вы также можете указать частичное совпадение запроса в командной строке, например:

pkill chr

Однако вы рискуете убить неправильный процесс, особенно когда существует несколько процессов с одинаковым или похожим именем.

Вы можете проверить список, указав полное имя процесса:

pidof chrome

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

Вы можете проверить список процессов с похожим названием, используя лишь часть имени:

pgrep -l chr

Эта команда выведет список процессов с соответствующим ID процесса.

Как убить процесс в Linux с помощью команды killall

Основное различие между killall и kill заключается в том, что killall может завершить процесс по имени, в то время как команда kill использует pid.

Пример такой команды:

killall chrome

Команда напоминает pkill. Однако killall использует точное соответствие имени, а pkill может убить процесс, сопоставив паттерн. Это одна из причин, по которой killall безопаснее, чем pkill.

Ещё одно отличие – это корневой пакет, к которому принадлежат команды. В Linux, killall принадлежит пакету psmisc. С другой стороны, такие команды, как ps, top, kill, pkill, принадлежат пакету procps.

Кроме того, killall можно настроить для завершения процессов на основе временных меток. Например, если вы хотите убить процесс, который работал менее 40 минут, вы можете использовать:

killall -y 40m 

Вы также можете использовать следующие параметры вместе с командой killall:

  • s – секунды
  • m – минуты
  • h – часы
  • d – дни
  • w – недели
  • M – месяцы
  • y – годы

Используйте ‘pgrep’ и ‘pkill’, чтобы убить приложения

Метод ps -and- kill, использованный ранее, работает во всех системах на основе Linux. Тем не менее, многие системы Linux предлагают быстрый способ выполнения той же задачи с использованием pgrep и pkill .

Pgrep оценивает имя процесса и возвращает идентификатор процесса.

Например:

Введите возвращенный идентификатор процесса в pkill следующим образом:

Команда pkill также принимает имя процесса, поэтому вы можете ввести:

Это хорошо, если у вас есть только один экземпляр приложения, но менее полезен, если вы открываете несколько окон Firefox и хотите просто убить одно. Xkill гораздо полезнее в этой ситуации.

Таблица принятия решений (Decision Table Testing)

Техника

  1. Определить все условия
  2. Составить все возможные комбинации условий
  3. Убрать лишние комбинации. Удаляются те, в которых изменение значений никак не влияет на получаемый результат (Don’t care — DC)
  4. Определить действия
  5. Создать тест-кейсы для каждой комбинации

Таблица принятия решений — представляет связь составных условий и результирующих действий.

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

23=8 комбинаций Rule 1 Rule 2 Rule 3 Rule 4 Rule 5 Rule 6 Rule 7 Rule 8
Conditions
Допустимый код акции N N N N Y Y Y Y
Допустимое количество N N Y Y N N Y Y
Достаточно средств N Y N Y N Y N Y
Actions
Купить N N N N N N N Y

Внимательно посмотрев на таблицу, можно заметить, что в правилах 1, 2, 3, 4, если код акции недопустимый, то проверка остальных условий не имеет смысла. Правила 5 и 6 могут быть объединены, т.к. условие проверки средств никак не влияет на результат. Условия, которые не оказывают влияние на результат помечаются как “DC”. Таблица преобразуется:

4 комбинации Rule 1 Rule 2 Rule 3 Rule 4
Conditions
Допустимый код акции N Y Y Y
Допустимое количество DC N Y Y
Достаточно средств DC DC N Y
Actions
Купить N N N Y

Т.к. всегда есть вероятность того, что таблица может быть преобразована неверно или код написан неправильно лучше, чтобы исходная таблица все равно была под рукой.

Seagate все равно на коне

Несмотря на неутешительные показатели надежности, согласно отчету Backblaze, винчестеры Seagate остаются самыми популярными в мире, и доля компании на мировом рынке продолжает расти. Профильный портал Block & Files опубликовал статистику за I квартал 2021 г. на основе данных аналитических компаний IDC, Coughlin и TrendForce. В ней сказано, что Seagate удерживает 43% глобального рынка жестких дисков в натуральном выражении против 36% у Western Digital и 21% у Toshiba.

С продажами на мировом рынке у Seagate полный порядок

Годом ранее на долю Seagate приходилось 42% рынка, у Western Digital было 37%, у Toshiba – 21%. В I квартале 2019 г. доли составляли 40,9%, 45,8% и 13,3% соответственно, то есть всего два года назад лидером была Western Digital.

Как завершить процесс с помощью pkill

Утилита pkill – это оболочка для kill, она ведет себя точно так же, и имеет тот же синтаксис, только в качестве идентификатора процесса ей нужно передать его имя. Утилита сканирует директорию proc и находит PID первого процесса с таким именем, затем отправляет ему SIGTERM. Таким образом, вы можете убить процесс по имени Linux. Например, если мы хотим завершить тот же ping:

Также можно вручную задать тип сигнала:

pkill -TERM ping

Вместо ps, вы можете использовать утилиту pgrep для поиска pid процесса, убедимся что наша программа завершена:

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

Требования

Основные характеристики отказоустойчивости требуют:

  1. Отсутствие единой точки отказа — если в системе произошел сбой, она должна продолжать работать без перебоев в процессе ремонта.
  2. Изоляция сбоя для отказавшего компонента — при возникновении сбоя система должна быть способна изолировать сбой от сбойного компонента. Это требует добавления специальных механизмов обнаружения отказов, которые существуют только с целью локализации отказов. Восстановление после неисправности требует классификации неисправности или отказавшего компонента. Национальный институт стандартов и технологии (NIST) классифицируют неисправности на основе местности, причины, продолжительность и эффект.
  3. Сдерживание отказов для предотвращения распространения отказа — некоторые механизмы отказа могут вызвать отказ системы, распространяя отказ на остальную систему. Примером такого отказа является «мошеннический передатчик», который может заблокировать законную связь в системе и вызвать общий отказ системы. Требуются межсетевые экраны или другие механизмы, которые изолируют несанкционированный передатчик или отказавший компонент для защиты системы.
  4. Наличие режимов реверсии

Кроме того, отказоустойчивые системы характеризуются как запланированными перерывами в обслуживании, так и незапланированными перебоями в обслуживании. Обычно они измеряются на уровне приложения, а не только на уровне оборудования. Показатель качества называется доступностью и выражается в процентах. Например, система « пять девяток» статистически обеспечит доступность 99,999%.

Отказоустойчивые системы обычно основаны на концепции избыточности.

Системный монитор

Следующим вариантом является открытие утилиты System Monitor операционной системы Linux, во многом аналогично диспетчеру задач Windows.

, Это обычно находится в Системные инструменты меню, и после запуска отобразится список запущенных процессов под Процессы Вкладка.

Чтобы закрыть не отвечающее приложение, просто выберите его и щелкните правой кнопкой мыши. Затем у вас есть три варианта:

  • Остановить процесс — это приостанавливает процесс, позволяя продолжить его позже. Это не сработает в большинстве случаев.
  • Завершить процесс — правильный способ закрыть процесс, это безопасно завершит работу приложения, удаляя временные файлы в пути.
  • Убить процесс — это крайний вариант, и его следует использовать только в случае сбоя конечного процесса.

Лучше использовать их по порядку. Однако, если приложение регулярно зависает, вы можете перейти к команде, которая, как вы знаете, работает.

Другие способы убить программу

Есть еще 5 способов убить приложение Linux, как указано в связанном руководстве.

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

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

Чтобы запустить команду kill, вам нужно знать идентификатор процесса, который вы хотите убить. Для этого вы можете использовать команду ps.

Например, чтобы найти запущенную версию Firefox, вы можете запустить следующую команду:

В конце вы увидите строку данных с командой / usr / lib / firefox / firefox. В начале строки вы увидите свой идентификатор пользователя и номер после идентификатора пользователя ID процесса.

Используя идентификатор процесса, вы можете убить Firefox, выполнив следующую команду:

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

Чтобы убить такую ​​программу, как Firefox, откройте терминал и выполните следующую команду:

Теперь курсор изменится на большой белый крест. Наведите курсор на окно, которое вы хотите убить, и щелкните левой кнопкой мыши. Программа выйдет немедленно.

Другой способ убить процесс — это использовать верхнюю команду Linux. В верхней команде перечислены все запущенные процессы в вашей системе.

Все, что вам нужно сделать, чтобы убить процесс, это нажать клавишу «k» и ввести идентификатор процесса приложения, которое вы хотите убить.

Ранее в этом разделе команда kill, и вам потребовалось найти процесс, используя команду ps, а затем убить процесс, используя команду kill. Это не самый простой вариант.

С одной стороны, команда ps возвращает массу ненужной информации. Все, что вам нужно, это идентификатор процесса. Вы можете получить идентификатор процесса более просто, выполнив следующую команду:

Результатом вышеуказанной команды является просто идентификатор процесса Firefox. Теперь вы можете запустить команду kill следующим образом:

(Заменить с фактическим идентификатором процесса, возвращаемым pgrep).

Однако на самом деле проще просто указать имя программы для pkill следующим образом:

Наконец, вы можете использовать графический инструмент, такой как тот, который поставляется с Ubuntu под названием «Системный монитор». Для запуска «Системного монитора» нажмите клавишу супер (ключ Windows на большинстве компьютеров) и введите «sysmon» в панель поиска. Когда появится значок системного монитора, щелкните по нему.

Системный монитор отображает список процессов. Чтобы закончить программу чистым способом, выберите ее и нажмите клавишу завершения в нижней части экрана (или нажмите CTRL и E). Если это не сработает, щелкните правой кнопкой мыши и выберите «Убить» или нажмите CTRL и K в процессе, который вы хотите убить.

Повышение привилегий через эксплуатацию уязвимостей

Прежде чем пытаться повысить привилегии через эксплуатацию, важно разобраться с передачей файлов на целевой хост. Помимо привычных средств вроде ssh, ftp, http (wget, curl) есть целый

Для повышения безопасности системы регулярно обновляйте ее до актуальных стабильных версий, а также старайтесь использовать дистрибутивы, рассчитанные на Enterprise. В противном случае, редко, но бывают ситуации, когда apt upgrade делает систему неработоспособной.

Эксплуатация сервисов, запущенных в контексте пользователя root

Некоторые сервисы Linux работают от привилегированного пользователя root. Их можно найти с помощью команды ps aux | grep root. При этом сервис может не анонсироваться в Cеть и быть доступным локально. Если он имеет публичные эксплоиты, их можно смело применять: падение сервиса в случае неудачи гораздо менее критично, чем падение ОС.

Самым удачным случаем можно считать работу взломанного сервиса в контексте пользователя root. Эксплуатация сервиса SMB дает привилегированный доступ SYSTEM в системах Windows (например, через ms17-010). Однако в системах Linux такое встречается нечасто, поэтому можно провести немало времени над повышением привилегий.

Эксплуатация уязвимостей ядра Linux

Это путь, которым следует идти в последнюю очередь. Неудачная эксплуатация может привести к падению системы, а в случае ребута некоторые сервисы (в том числе те, через которые удалось получить изначальный shell) могут не подняться. Бывает, что администратор банально забыл применить команду systemctl enable . Плюс это вызовет много недовольства вашими работами, если эксплуатация не была согласована.
Если решили использовать исходные коды из exploitdb, обязательно прочитайте комментарии в начале скрипта. Помимо прочего, там обычно написано, как следует правильно компилировать данный эксплоит. Если самому лень или по срокам нужно было «вчера», можно поискать репозитории с уже скомпилированными эксплоитами, например. Однако следует понимать, что в таком случае вы получите кота в мешке. С другой стороны, если бы программист разбирался до байта, как устроен компьютер и используемый им софт, он бы за всю жизнь не написал бы и строчки кода.

Metasploit

Для того, чтобы поймать и обработать соединение, всегда лучше использовать модуль exploit/multi/handler. Главное — выставить правильный payload, например, generic/shell/reverce_tcp или generic/shell/bind_tcp. Оболочку, полученную в Metasploit, можно улучшить до Meterpreter с использованием модуля post/multi/manage/shell_to_meterpreter. Имея Meterpreter, вы можете автоматизировать процесс постэксплуатации. Например, модуль post/multi/recon/local_exploit_suggester проверяет платформу, архитектуру и необходимые для эксплуатации сущности и предлагает модули Metasploit для повышения привилегий на целевой системе. Благодаря Meterpreter, повышение привилегий иногда сводится к запуску нужного модуля, однако взлом без понимания происходящего под капотом не является «тру» (вам еще отчет писать).

Tools

Инструменты автоматизации локального сбора информации сохранят вам большое количество сил и времени, однако сами по себе не способны полностью выявлять путь повышения привилегий, особенно в случае эксплуатации уязвимостей ядра

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

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

Linpeas

Достаточно свежая тула, первый коммит датируется январем 2019 года. На данный момент мой любимый инструмент. Суть в том, что он подсвечивает наиболее интересные векторы повышения привилегий. Согласитесь, удобнее получить экспертную оценку на таком уровне, чем разбирать монолитные сырые данные.

LinEnum

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

Linux-exploit-suggester (1,2)

Этот эксплоит проанализирует систему на наличие подходящих условий для эксплоитов. По сути, сделает работу, идентичную модулю Metasploit local_exploit_suggester, но предложит не модули Metasploit, а ссылки на исходные коды exploit-db.

Linuxprivchecker

Данный скрипт соберет и систематизирует по разделам большое количество информации, которая может быть полезна для формирования вектора повышения привилегий.

В другой раз я подробно разберу повышение привилегий в ОС Linux через suid/sgid.

Избегайте не отвечающего программного обеспечения: обновите свое оборудование

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

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

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

  1. Нажмите X в углу.
  2. Используйте системный монитор.
  3. Используйте приложение xkill.
  4. Используйте команду kill.
  5. Закройте приложения с помощью pkill.
  6. Используйте killall, чтобы закрыть программное обеспечение.
  7. Создайте сочетание клавиш.

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

Состав системы:

  • Браузер,
  • Медиа плеер,
  • Аудио плеер,
  • Программа для чтения книг,
  • Программа для просмотра PDF,
  • Графический редактор,
  • Программа для просмотра роликов с youtube,
  • Торрент клиент,
  • Программа для загрузки файлов.

И много других утилит. Всё остальное можно найти и подключить как я уже говорил из сетевого репозитория с модулями. Более подробно о том как можно работать с модулями, я расскажу в следующей статье.

Хочу отметить что в системе ядро-pf , yad , vala-panel -от русскоязычных разработчиков, что не может не радовать. Дистрибутив содержит 3 варианта initrd, разных по сложности и функционалу: PRA-Porteus, rootaufs2, UIRD, .

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом.
Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С).
На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков).
Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres.
А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL).
Если, конечно, статья придется вам по вкусу.

Способ 2 – Восстановление зависшей системы Linux с виртуальными консолями (TTY)

Иногда вам не повезет, система может показаться полностью мертвой.

Но это может быть просто иллюзией. Помните стек программ внутри пользовательского стека? Давайте немного поработаем с этим постулатом.

Хотя может показаться, что корнем пользовательского стека является X Window. Это не так.

X Window System работает на виртуальной консоли (VC), также называемой TTY. Консоли представлены в файловой системе как /dev/ttyX. Linux имеет несколько VC. Попытка получить доступ к другой консоли может помочь вернуть вам контроль над системой.

Вы можете переключиться на другой VC, нажав CTRL+ALT+F в среде графического интерфейса или ALT+F в другом VC. Вышеупомянутое нажатие клавиши дает вам доступ к VC 1-6. Графический интерфейс работает на VC 7 и выше (в зависимости от дистрибутива).

При работе с нестабильной системой даже запрос на смену VC может занять некоторое время, поэтому будьте немного терпеливы.

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

После того, как вы вошли в систему, у вас есть варианты выхода из сложившейся ситуации.

Как убить процесс Linux?

Для передачи сигналов процессам в Linux используется утилита kill. Ее синтаксис очень прост:

$ kill
-сигнал
pid_процесса

Сигнал представляет собой один из выше перечисленных сигналов для завершения процесса. По умолчанию, если этот параметр не указан, используется сигнал SIGTERM, что является очень правильно. Также нам нужно указать какой процесс нужно завершить. Для этого используется уникальный идентификатор процесса — PID.

Допустим, у нас выполняется утилита ping. Мы хотим ее завершить с помощью kill. Тогда, сначала мы узнаем ее идентификатор с помощью команды ps:

ps aux | grep ping

В первой строчке отобразится сама утилита ping, а во второй сама программа ps. Берем нужный PID и завершаем процесс с помощью SIGTERM:

kill -TERM 20446

И только если после этой команды процесс продолжил висеть, а это вы можете проверить, выполнив ps. Только теперь можно выполнить SIGKILL:

kill -KILL 20446

Теперь снова проверяем:

Если процесс запущен от суперпользователя, то, естественно, вам нужно использовать sudo. Не всегда удобно уничтожать процесс по его PID, как минимум, потому, что вам этот PID нужно еще узнать. Мы могли бы нагородить сложных конструкций с использованием xargs, чтобы вычислять автоматически pid по имени процесса и сразу же его завершать, но в этом нет необходимости. Уже существуют специальные утилиты.

3. Принудительно уничтожать процессы Linux с помощью xkill

Другой вариант, который вы можете использовать — это xkill. Это инструмент принудительного уничтожения, предустановленный в Ubuntu, но вы можете установить его через терминал в других дистрибутивах, если это необходимо. При вызове xkill позволит вам закрыть любой процесс на рабочем столе. Установите его с помощью следующей команды:

Как только это будет сделано, запустите xkill, просто набрав

Ваш указатель мыши будет отображать крест (или череп). Щелкните левой кнопкой мыши на приложении-нарушителе, чтобы закрыть его

Если невозможно закрыть приложение, не отвечающее на запросы, одним из этих методов, ориентированных на рабочий стол, решение может быть в командной строке …

Не убивается процесс Linux

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

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

  • Недостаточно прав – вы не можете убить процесс, запущенный от имени другого пользователя, используйте sudo;
  • Программа зависла – необходимо ей послать сигнал KILL;
  • Программа стала зомби – необходимо уничтожить её родительский процесс.
  • Программа ждет ответа от драйвера – ждать или перезапустить компьютер.

В любом случае сначала пробуем от имени суперпользователя:

sudo kill -KILL идентификатор_процесса

Сначала можно попробовать завершить программу с помощью сигнала KILL, для этого передайте -KILL или -9 в виде опции утилите kill:

kill -KILL идентификатор_процесса

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

ps -xal | grep идентификатор_процесса

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: