Новини високих технологій
» » Linux: як вбити процес з допомогою термінальних команд

Linux: як вбити процес з допомогою термінальних команд

26-10-2018, 10:22
469
Уявіть собі: ви запустили програму, працюєте з нею, а через час вона перестає відповідати на запити і висне. Запустити повторно додаток неможливо із-за того, що її примірник ще висить в пам'яті комп'ютера. Що робити в такому випадку? У першу чергу потрібно завершити роботу програми і процес видалити з пам'яті. Найбільш простий і універсальний спосіб вбити процес в Linux — це використання термінальних команд. Даний варіант буде працювати на будь-якому дистрибутиві Linux.

Процеси в Linux

В операційній системі Linux процесом зазвичай називають запущену програму або програму. Також процесом можна називати будь-яку задачу, яка працює в даний момент під управлінням Linux. Кожен працюючий процес може запустити дочірній.


Всі процеси, що працюють в Linux, мають такі атрибути: PID — унікальний для кожного процесу ідентифікатор. PPID — ідентифікатор батьківського процесу. Ідентифікатор користувача, який запустив процес. Пріоритет. Стан процесу. Кожен запущений процес знаходиться в одному із станів: "Виконується". Для позначення цього стану використовується буква R. Процес, який запустив системну операцію, наприклад, введення або виведення даних, і чекає коли завершиться її виконання, називається "Очікування". Позначається буквою S. Процес, який зупинений користувачем або ОС Linux, перебуває в стані "Зупинений". Цей стан позначається символом Т. "Зомбі" - процеси, які більше не виконуються, але споживають ресурси операційної системи. Позначаються літерою Z. Безперервний процес можна завершити, поки не закінчиться операція прямого доступу в пам'ять. Позначається процес символом D.

Пошук процесу

Перед тим як в Linux вбити процес, його потрібно спочатку знайти. Найчастіше для цієї мети в Linux використовують дві команди top і ps.


Використання команди top

Команда top виводить на екран повний список поточних процесів. Крім того, у списку міститься безліч корисних відомостей про кожному запущеному процесі, наприклад: PID - унікальний номер процесу; USER - логін користувача, який запустив даний процес; PR - пріоритет процесу в даний момент часу; NI - пріоритет присвоєні процесу командою NICE; S - стан даного процесу; %CPU - скільки процесорного часу займає цей процес (у відсотках); %MEM - обсяг оперативної пам'яті, яку займає даний процес (у відсотках); TIME+ - скільки часу пройшло з моменту запуску процесу; COMMAND - програма, яка запустила процес.
Інформація, що надається командою top, виводиться відсортованої за рівнем використовуваного процесорного часу (стовпець %CPU). Користувач може змінити порядок сортування: відсортувати процеси за обсягом займаної оперативної пам'яті (стовпчик %MEM) потрібно натиснути комбінацію клавіш Shift+M; відсортувати за номером процесу (стовпець PID) можна за допомогою комбінації Shift+N; сортувати за часом роботи (стовпець TIME+) - Shift+T. повернутися до вихідної сортування за рівнем завантаження центрального процесора - натиснути комбінацію Shift+P.

Використання команди ps

За допомогою команди top можна отримати безліч необхідних відомостей, проте це не самий зручний спосіб отримання необхідної інформації про потрібному вам процесі. Щоб не шукати потрібний процес, можна скористатися командою ps і фільтрувати список за допомогою команди greep. Наприклад, якщо потрібно знайти всі процеси, пов'язані з запущеним браузером Opera, можна ввести команду ps axu | grep Mozilla.
Команда ps володіє наступними параметрами: a - показати процеси для всіх користувачів; u - відобразити користувача, який є власником процесу; x - показують процеси, не прив'язані до терміналу. Дана опція важлива при пошуку інформації про графічному додатку.
За допомогою зв'язки команд ps і grep можна отримати всю інформацію, необхідну для знищення завислого додатка.

Інші способи пошуку процесу

Для того, щоб знайти PID процесу по його імені, існує команда pidof. Формат її використання наступний: pidof+ім'я програми. Наприклад, щоб знайти всі PID, що відносяться до програми Opera, потрібно ввести: pidof Opera. В деяких випадках буває так, що програма завершила своє виконання, але не звільнила мережевий порт. Щоб отримати відомості, що в даному випадку потрібно ввести команду fuser: fuser -vn tcp 80. Де 80 - це номер завислого порту. Після цього можна вбити процес Linux по порту.

Завершення процесу з допомогою команди kill

Після того як ви дізналися PID процесу і його ім'я, можна приступити до операції завершення непотрібного програми. Для цього використовуються дві команди: kill - вбити процес id Linux та killall - завершити виконання програми по імені.
Структура команди kill: kill SIGNAL PID. Де SIGNAL - це сигнал, який має бути відправлений, а PID - ідентифікатор процесу.
Параметр SIGNAL завершення процесу дорівнює 9 (SIGKILL). Таким чином, щоб в Linux вбити процес з pid потрібно ввести в консолі команду: kill -99578. Де 9578 унікальний номер процесу. Команда завершення процесу не єдина, яка може бути відправлена за допомогою системного застосування kill. Отримати список всіх команд, які можуть бути відправлені команді з допомогою kill, можна ввівши команду kill -l.
Корисно також знати інші значення, які може приймати параметр SIGNAL. Наприклад, для перезавантаження завислої програми можна використовувати параметр HUP. Сигнал SIGTERM не перериває роботу програми миттєво, а дає час для коректного завершення роботи, тобто програма зберігає дані, завершує своє виконання, та звільняє всі зайняті ресурси.

Як в Linux вбити процес по імені

Якщо відомо ім'я програми, яку потрібно виконати, можна скористатися командою killall. Наприклад, щоб знищити всі процеси, що відносяться до додатка Opera потрібно ввести команду: killall -9 Opera.
Правда, ця команда не завжди завершує процеси, що відносяться до уничтожаемой програмі. Якщо після виконання вищезгаданої команди ви введете комбінацію ps aux | grep Opera і побачите, що деякі процеси ще виконуються, найкраще завершити їх за допомогою системного застосування kill. У деяких випадках, щоб в Linux вбити процес, запущений іншим користувачем, можуть знадобитися права адміністратора. Тоді перед командою завершення процесу потрібно ввести команду sudo. Ось і всі відомості, необхідні користувачу для управління процесами. Правда, дана тема не є простою для новачків, але освоїти її потрібно, так як всі дії операційної системи здійснюються з допомогою процесів. Щоб навчитися управляти ними, потрібно трохи потренуватися.
Цікаво по темі
Як переглянути список процесів Linux
Як переглянути список процесів Linux
В Linux, як і в будь-якій іншій операційній системі, є процеси. Всі вони відповідають за роботу тієї чи іншої програми. В якийсь момент для вирішення
Пошук по вмісту файлів в Linux: можливі варіанти вирішення проблеми
Пошук по вмісту файлів в Linux: можливі варіанти вирішення проблеми
У кожної операційної системи є свої плюси і мінуси, які проявляються при роботі. Те ж стосується і Linux. У багатьох користувачів регулярно виникають
Ekrn.exe - що це за процес і чому він вантажить систему
Ekrn.exe - що це за процес і чому він вантажить систему
У цій статті буде розказано про ekrn.exe. Що це за процес, для чого він потрібен, чому може вантажити систему і як це виправити - це ви і дізнаєтесь
Як використовувати Putty: команди і корисні функції
Як використовувати Putty: команди і корисні функції
У цьому матеріалі ми познайомимося з PuTTY, безкоштовним клієнтом терміналу для Windows, який дозволяє віддалено керувати серверами на базі Linux по
Як додати користувача до групи Linux за допомогою командного рядка?
Як додати користувача до групи Linux за допомогою командного рядка?
По пам'яті всі намагаються додати користувача до групи Linux, переходячи в "Облікові записи", але там звичний функціонал відсутня. Незрозуміло, для
Як вивести в Linux список користувачів?
Як вивести в Linux список користувачів?
За допомогою якої команди можна переглянути в Linux список користувачів? Як розшифрувати отримані записи і зрозуміти, що написано на екрані?