Как завершить процесс в Linux: инструкция простыми словами

Если вы хоть раз имели дело с Linux, то наверняка сталкивались с ситуацией, когда какой-нибудь процесс решает «взять отпуск». Он висит, потребляет ресурсы, как ненасытный вампир, и на любые попытки общения отвечает гробовым молчанием. По любому вам такое знакомо. Вот и у меня недавно Firefox повёл себя так, будто я ему задолжал жизнь. Подвесил половину системы и притворился, что его нет. А ведь надо было просто завершить процесс. Но, как обычно, теория и практика это две большие разницы с пропастью по середине.

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

Сначала нужно понять, кого мы вообще убиваем

Перед тем как вытащить меч и с криком «kill -9!» бросаться в бой, стоит хотя бы узнать, кого именно вы собираетесь уничтожить. Для этого нам нужно найти процесс. Сделать это можно несколькими способами и вот тут начинается веселье.

1. Команда ps

Старая добрая psэто как дед в деревне: простая, но надёжная. Она показывает список всех процессов. Если вы просто введёте ps, то увидите жалкий список вроде пары строчек это только ваши собственные процессы. А вот если добавить немного магии, например, ps -aux, тогда Linux вывалит на экран всё, что шевелится в системе. И да, этого «всё» может быть чертовски много.

Команда ps -aux
Команда ps -aux

В выводе есть имена пользователей, PID (идентификатор процесса), процент загрузки процессора и кучу другой полезной информации. Главное не бойтесь всего что там написано. С первого взгляда это выглядит как хаос, но если приглядеться, всё логично и просто.

2. Команда pgrep

Если ps это старый дед, то команда pgrepэто его продвинутый внук. Он умнее тоже самое только  современнее и красивее. Вместо того чтобы разбираться в простыне вывода, можно просто спросить у системы: «Эй, покажи мне все процессы с именем firefox». Команда pgrep firefox вернёт PID, а если добавить -l, то и имя процесса. Удобно, особенно когда в системе десятки служб, а вам нужно найти одну-единственную.

Команда pgrep
Команда pgrep

Кстати, можно даже искать процессы конкретного пользователя через pgrep -u username. Это как фильтр в магазине: убираешь всё ненужное и оставляешь только то, что интересно.

3. Команда pidof

Её часто путают с pgrep, но у pidof задача проще: она просто возвращает PID конкретной программы. Например, pidof snapd. Всё, без изысков. Иногда меньше делает лучше.

4. И наконец, команда top

Если вы хотите увидеть всё вживую, а не просто цифры на экране, то top это ваш выбор. Это как диспетчер задач в Windows, только в консоли. Открываете, и перед вами прям вся жизнь системы: кто, что и сколько жрёт. ЦП, память, аптайм, прям все всё под рукой. Можно даже сортировать по нагрузке и убивать процессы прямо оттуда (нажмите k и введите PID). Удобно, но требует осторожности. Однажды я случайно убил не тот процесс и… скажем так, сайт setiwik стал недоступным.

Команда top
Команда top

Когда пора действовать: команды для завершения процессов

Хорошо, процесс найден. Что дальше? О вот дальше самое интересное. Мы будем его завершать. Но тут есть тонкости. В Linux не просто так придумал разные сигналы: можно попросить процесс умереть «по-хорошему» (SIGTERM) или убить процесс кувалдой (SIGKILL). Выбор за вами, но лучше начинать с мягкого подхода.

1. Базовый способ kill

Самая простая команда это kill. Указываете PID и система отправляет сигнал SIGTERM. Например:

kill 1234

Если процесс культурный, он поблагодарит, сохранит данные и уйдёт. Но бывают случаи, когда культурой там и не пахнет.

Тогда в ход идёт тяжёлая артиллерия:

kill -9 1234.

Это уже SIGKILL без компромиссов и пощады. Процесс мгновенно вырубается, даже если он сопротивляется. Только будьте осторожны: все несохранённые данные пропадут, как файлы после rm -rf.

2. Убиваем по имени killall

А вот это уже массовое оружие. Команда killall firefox завершит все процессы с именем firefox. Если у вас запущено пять вкладок браузера, можете попрощаться со всеми сразу. Иногда удобно, но иногда, а иногда чересчур. Чтобы не наломать дров, можно добавить флаг -i, тогда система спросит подтверждение перед убийством каждого процесса. Мелочь, а спасает нервы.

Есть и другие фишки: например, killall -o 15m убьёт все процессы, которые живут дольше 15 минут. Очень полезно, если какая-то фоновая служба зациклилась.

3. pkill умный убийца

Команда pkill это что-то среднее между pgrep и killall. Она ищет процесс по имени (или шаблону) и тут же его завершает. Например:

pkill -u user firefox

Эта команда убьёт Firefox только у конкретного пользователя. А флаг -n позволяет выбрать самый новый процесс. Очень удобно, когда у вас куча одинаковых служб, и нужно остановить только последнюю запущенную.

4. xkill — графический способ

Если вы не любите копаться в терминале, xkill это почти волшебство. Запускаете команду, курсор превращается в крестик, и вы просто кликаете по зависшему окну. И всё окно уходит в небытие. Пользователи GNOME и KDE часто даже не знают, что это встроенная функция, но работает она прекрасно.

Советы из личного опыта

  • Не злоупотребляйте kill -9. Да, он работает всегда, но часто оставляет «мусор» в памяти.
  • Если не знаете PID, начните с pgrep или top это быстрее, чем рыться в списках ps.
  • Помните: под root вы можете убить вообще всё, включая саму систему.

Заключение

Завершение процессов в Linux это вроде бы банальная вещь, но в ней куча нюансов. Как в жизни: можно уволить сотрудника по-хорошему, а можно выставить за дверь. SIGTERM это разговор с сотрудником, SIGKILL увольнение по статье. Лучше всегда начинать с первого.

На практике вы будете использовать все эти команды вперемешку: ps для поиска, kill для точечных ударов, killall и pkill, когда нужно быстро навести порядок, и xkill когда просто не хочется возиться. Со временем это становится интуитивным, как Ctrl+Alt+Del в Windows.

А если процесс всё равно не умирает,  тогда значит, не в нём дело. Возможно, система просто устала. Перезагрузка, как и кофе, решает больше, чем кажется.

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

Понравилась статья?

Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик — и ваш вклад помогает держать серверы включёнными и авторов мотивированными!

Спасибо, что вы с нами!

Nazario
Nazario

Я — Nazario, тот самый человек, который больше десяти лет ковыряется в Linux и Windows системах не ради хобби, а потому что это — работа и жизнь. Всё, что вы читаете на Setiwik.ru, — это не пересказ справки из мануала, а результат десятков реальных кейсов, выстраданных конфигов и ночных перезагрузок.

Я не претендую на истину в последней инстанции. Но если мой опыт может кому-то упростить работу — значит, всё это не зря. Здесь нет «магии», только практика: от настроек сервера до неожиданных багов, которые не гуглятся с первого раза.

Setiwik.ru — это место, где IT становится чуть менее хаотичным. Заходите почаще — будем разбираться вместе.

Добавить комментарий