Відмінності між версіями «Управління процесами в Linux»
(не показано 20 проміжних версій цього учасника) | |||
Рядок 1: | Рядок 1: | ||
+ | =<center>'''Команда ps'''</center>= | ||
Подивитися список завдань в Linux можна за допомогою команди '''ps'''. Якщо її запустити без параметрів, то вона видає список процесів, запущених у поточному сеансі користувача. Повний список опцій можна отримати стандартно - виконавши '''ps --help'''. | Подивитися список завдань в Linux можна за допомогою команди '''ps'''. Якщо її запустити без параметрів, то вона видає список процесів, запущених у поточному сеансі користувача. Повний список опцій можна отримати стандартно - виконавши '''ps --help'''. | ||
− | + | ||
− | '''ps -A''' - виводить список процесів з ідентифікаторами(PID) та їх іменами, або: | + | Приклади використання: |
− | '''ps -ax''' - виводить список процесів, з повним рядком запуску; | + | *'''ps -A''' - виводить список процесів з ідентифікаторами(PID) та їх іменами, або: |
− | '''ps -U user''' - список процесів породженим самим користувачем user; | + | *'''ps -ax''' - виводить список процесів, з повним рядком запуску; |
− | '''ps T''' - список задач, які пов'язані з поточним терміналом; | + | *'''ps -U user''' - список процесів породженим самим користувачем user; |
− | '''ps t ttyN''' -список задач, пов'язаних з терміналом N; | + | *'''ps T''' - список задач, які пов'язані з поточним терміналом; |
+ | *'''ps t ttyN''' -список задач, пов'язаних з терміналом N; | ||
+ | |||
Якщо список завдань великий, а нас цікавить стан однієї або кількох завдань, можна скористатися grep: | Якщо список завдань великий, а нас цікавить стан однієї або кількох завдань, можна скористатися grep: | ||
− | '''ps -U root | grep''' ppp - виводидь список завдань, які мають "ppp" в імені; | + | |
+ | *'''ps -U root | grep''' ppp - виводидь список завдань, які мають "ppp" в імені; | ||
+ | =<center>'''Команда top'''</center>= | ||
+ | Для отримання відомостей про використання ресурсів комп'ютера можна скористатися командою '''top''': | ||
+ | <center>'''[[Файл:Команда_Топ_Бабіч.jpg]]'''</center> | ||
+ | |||
+ | У верхній частині вікна виводяться сумарні дані про стан системи - поточний час, час з моменту завантаження системи, число користувачів в системі, число процесів в різних станах, дані про використання процесора і пам'яті. | ||
+ | |||
+ | Нижче виводиться таблиця, що характеризує окремі процеси. Число рядків, що відображаються в цій таблиці, визначається розміром вікна. Вміст вікна оновлюється кожні 3 секунди. Натиснення клавіші '''h''' виводить довідку по командах, які дозволяють змінити формат даних що відображаються і управляти деякими параметрами процесів у системі: | ||
+ | |||
+ | *'''s''' або '''d''' - змінити інтервал оновлення вікна; | ||
+ | *'''z''' - кольорове/чорно-біле відображення; | ||
+ | *'''n'''або '''#''' - кількість процесів які відображаються; | ||
+ | |||
+ | Можна відсортувати список процесів по використанню процесів процесора '''(P)''', пам'яті ('''M)''', часу виконання '''(T)''' и т.п. | ||
+ | |||
+ | Однак, є й більш корисні команди, які дозволяють управляти процесами в інтерактивному режимі: | ||
+ | * '''k'''- зняти (kill) задачу. За цією командою буде відправлено запит на ідентифікатор процесу (PID), після введення якого, процес буде завершений. | ||
+ | *'''r''' - змінити поточний пріоритет завдання (renice). Як і при виконанні попередньої команди, буде запитаний PID, і потім, нове значення пріоритету (відображається в колонці NI). Діапазон значень пріоритетів - від мінус 20 (найвищий) до плюс 19. Від'ємні значення і 0 може встановлювати тільки користувач ''root''. | ||
+ | Для виходу з top потрібно натиснути клавішу '''''q'''''. | ||
+ | |||
+ | =<center>'''Команда kill'''</center>= | ||
+ | Ці ж дії (примусове завершення процесу і зміна його пріоритету) можна виконати і без команди top. | ||
+ | |||
+ | Процеси в Linux мають можливість обмінюватися так званими "сигналами" з ядром та іншими процесами. При отриманні сигналу процесом, управління передається підпрограмі його обробки, або ядру, якщо такий підпрограм немає. У Linux є команда '''kill''', яка дозволяє послати заданому процесу будь-який сигнал. Список сигналів можна отримати виконавши команду | ||
+ | *'''kill -l'''. В результаті виконання цієї команди ви побачите список номерів і назв сигналів. | ||
+ | Для того, щоб послати певний сигнал заданому процесу, потрібно ввести:'''kill <номер сигналу> номер PID вибраного процесу'''. | ||
+ | |||
+ | Наприклад, потрібно завершити роботу додатку Midnight Commander (mc). | ||
+ | |||
+ | 1)Визначимо ідентифікатор процесу mc: | ||
+ | ps -A | grep mc | ||
+ | |||
+ | Нехай PID= 11597. | ||
+ | |||
+ | 2)Посилаємо сигнал SIGQUIT (номер 3): | ||
+ | kill -3 11597 | ||
+ | |||
+ | 3)Після чого процес mc обробляє сигнал GIGQUIT і завершується. Але, якщо mc "завис", то він не зможе завершитись, оскільки підпрограма обробки сигналу SIGQUIT не отримає управління.В таких випадках використовують сигнал під номером 9 (SIGKILL), який опрацьовується ядром операційної системи, і примусово завершить вказаний процес: | ||
+ | kill -9 11597 | ||
+ | |||
+ | 4)Якщо в команді kill номер сигналу не задано, то використовується SIGKILL, тобто, попередню команду можна було ввести як kill PID: | ||
+ | kill 11597 | ||
+ | |||
+ | При завершені процесу завершуються і породжені ним процеси. | ||
+ | |||
+ | Для завершення процесу по імені використовується команда killall: | ||
+ | '''killall mc''' - завершити процес, в імені якого присутнє "mc"; | ||
+ | '''killall -u user''' - завершити процес породжений користувачем user; | ||
+ | |||
+ | =<center>'''Команди nice і renice'''</center>= | ||
+ | |||
+ | Для зміни пріоритету процесів використовуються команди nice і renice. При запуску процесу, його пріоритет задається значенням батьківського процесу, наприклад, терміналу xterm або командою оболонки shell. | ||
+ | |||
+ | '''''Команда nice''''' дозволяє запустити процес з пріоритетом, рівним сумі батьківського (наприклад 8) і числа, що задається як опція команди nice: | ||
+ | '''nice -< число > команда''' | ||
+ | |||
+ | '''nice -4 mc''' - запустить mc з пріоритетом = 8+4=12. | ||
+ | |||
+ | '''''Команда renice''''' використовується для зміни пріоритету вже запущеного процесу: | ||
+ | '''renice < число > -p PID''' | ||
+ | |||
+ | '''renice 4 -p 11597''' - встановить значення пріоритету для процесу mc (PID=11597) рівне 4. | ||
+ | |||
+ | Після виконання, renice видасть строку результату: | ||
+ | 11597: old priority 12, new priority 4 - старий пріоритет 12, новий пріоритет 4. | ||
+ | |||
+ | Від'ємні значення і 0 може встановлювати тільки користувач ''root''. |
Поточна версія на 11:38, 6 травня 2014
Команда ps
Подивитися список завдань в Linux можна за допомогою команди ps. Якщо її запустити без параметрів, то вона видає список процесів, запущених у поточному сеансі користувача. Повний список опцій можна отримати стандартно - виконавши ps --help.
Приклади використання:
- ps -A - виводить список процесів з ідентифікаторами(PID) та їх іменами, або:
- ps -ax - виводить список процесів, з повним рядком запуску;
- ps -U user - список процесів породженим самим користувачем user;
- ps T - список задач, які пов'язані з поточним терміналом;
- ps t ttyN -список задач, пов'язаних з терміналом N;
Якщо список завдань великий, а нас цікавить стан однієї або кількох завдань, можна скористатися grep:
- ps -U root | grep ppp - виводидь список завдань, які мають "ppp" в імені;
Команда top
Для отримання відомостей про використання ресурсів комп'ютера можна скористатися командою top:
У верхній частині вікна виводяться сумарні дані про стан системи - поточний час, час з моменту завантаження системи, число користувачів в системі, число процесів в різних станах, дані про використання процесора і пам'яті.
Нижче виводиться таблиця, що характеризує окремі процеси. Число рядків, що відображаються в цій таблиці, визначається розміром вікна. Вміст вікна оновлюється кожні 3 секунди. Натиснення клавіші h виводить довідку по командах, які дозволяють змінити формат даних що відображаються і управляти деякими параметрами процесів у системі:
- s або d - змінити інтервал оновлення вікна;
- z - кольорове/чорно-біле відображення;
- nабо # - кількість процесів які відображаються;
Можна відсортувати список процесів по використанню процесів процесора (P), пам'яті (M), часу виконання (T) и т.п.
Однак, є й більш корисні команди, які дозволяють управляти процесами в інтерактивному режимі:
- k- зняти (kill) задачу. За цією командою буде відправлено запит на ідентифікатор процесу (PID), після введення якого, процес буде завершений.
- r - змінити поточний пріоритет завдання (renice). Як і при виконанні попередньої команди, буде запитаний PID, і потім, нове значення пріоритету (відображається в колонці NI). Діапазон значень пріоритетів - від мінус 20 (найвищий) до плюс 19. Від'ємні значення і 0 може встановлювати тільки користувач root.
Для виходу з top потрібно натиснути клавішу q.
Команда kill
Ці ж дії (примусове завершення процесу і зміна його пріоритету) можна виконати і без команди top.
Процеси в Linux мають можливість обмінюватися так званими "сигналами" з ядром та іншими процесами. При отриманні сигналу процесом, управління передається підпрограмі його обробки, або ядру, якщо такий підпрограм немає. У Linux є команда kill, яка дозволяє послати заданому процесу будь-який сигнал. Список сигналів можна отримати виконавши команду
- kill -l. В результаті виконання цієї команди ви побачите список номерів і назв сигналів.
Для того, щоб послати певний сигнал заданому процесу, потрібно ввести:kill <номер сигналу> номер PID вибраного процесу.
Наприклад, потрібно завершити роботу додатку Midnight Commander (mc).
1)Визначимо ідентифікатор процесу mc: ps -A | grep mc
Нехай PID= 11597.
2)Посилаємо сигнал SIGQUIT (номер 3): kill -3 11597
3)Після чого процес mc обробляє сигнал GIGQUIT і завершується. Але, якщо mc "завис", то він не зможе завершитись, оскільки підпрограма обробки сигналу SIGQUIT не отримає управління.В таких випадках використовують сигнал під номером 9 (SIGKILL), який опрацьовується ядром операційної системи, і примусово завершить вказаний процес: kill -9 11597
4)Якщо в команді kill номер сигналу не задано, то використовується SIGKILL, тобто, попередню команду можна було ввести як kill PID: kill 11597
При завершені процесу завершуються і породжені ним процеси.
Для завершення процесу по імені використовується команда killall: killall mc - завершити процес, в імені якого присутнє "mc"; killall -u user - завершити процес породжений користувачем user;
Команди nice і renice
Для зміни пріоритету процесів використовуються команди nice і renice. При запуску процесу, його пріоритет задається значенням батьківського процесу, наприклад, терміналу xterm або командою оболонки shell.
Команда nice дозволяє запустити процес з пріоритетом, рівним сумі батьківського (наприклад 8) і числа, що задається як опція команди nice: nice -< число > команда
nice -4 mc - запустить mc з пріоритетом = 8+4=12.
Команда renice використовується для зміни пріоритету вже запущеного процесу: renice < число > -p PID
renice 4 -p 11597 - встановить значення пріоритету для процесу mc (PID=11597) рівне 4.
Після виконання, renice видасть строку результату: 11597: old priority 12, new priority 4 - старий пріоритет 12, новий пріоритет 4.
Від'ємні значення і 0 може встановлювати тільки користувач root.