- •Лабораторна робота №2.
- •Процеси Linux
- •Робота з багатьма процесами
- •Планування запуску команд
- •Планування виконання за допомогою сron і crontab
- •Інформація про стан процесів
- •Моніторинг процесів за допомогою ps
- •Одержання додаткової інформації про процеси
- •Використання команди nohup
- •Зміна пріоритету команд за допомогою nice
- •Зміна пріоритету працюючого процесу за допомогою renice
- •Припинення процесу за допомогою команди kill
- •Нормальнеє завершення фонового процесу
- •Безумовне припинення фонового процесу
- •Завершення усіх фонових процесів
- •Хід роботи
- •Запуск команд у визначений час за допомогою команди at
- •Планування виконання за допомогою сron і crontab
Зміна пріоритету працюючого процесу за допомогою renice
Команда renice, що мається в деяких версіях UNIX, дозволяє змінити пріоритет працюючого процесу. Формат цієї команди подібний формату команди nice:
renice -number PID
Для зміни пріоритету працюючого процесу необхідно знати його ідентифікатор, одержати який можна за допомогою розглянутої команди ps, наприклад, викликавши
ps -е | grep name
У даній команді необхідно замінити паті ім'ям цікавлячого вас процесу. Команда grep отфільтрує тільки ті записи, у яких буде зустрічатися ім'я потрібної команди, і ви зможете довідатися ідентифікатор її процесу. Якщо ви хочете змінити пріоритет усіх процесів користувача чи групи користувачів, у команді renice використовуйте ідентифікатор користувача чи групи.
Приклад використання renice, припустивши, що ім'я користувача рсосо:
$ ps -ef | grep $LOGNAME
рсосо 11805 11804 0 Dec 22 ttysb 0:01 sort sales.dat > sales.srt
рсосо 19955 19938 4 16:13:02 ttyp 0:00 grep рсосо
рсосо 19938 1 0 16:11:04 ttyp 0:00 bash
рсосо 19940 19938 42 16:13:02 ttyp 0:33 find . -name core -exec пп.{};
Тепер, щоб понизити пріоритет процесу find c ідентифікатором 19940, уведіть renice -5 19940
У випадку renice працюють того ж правила, що й у випадку nice.
• Ви можете використовувати renice тільки зі своїми процесами.
• Суперкористувач може застосувати renice до будь-якого процесу.
• Тільки Суперкористувач може підвищити пріоритет процесу.
Припинення процесу за допомогою команди kill
Іноді необхідно припинити виконання процесу, не чекаючи його нормального завершення. Це може відбутися в ряді випадків.
• Процес використовує занадто багато часу процесора й ресурсів комп'ютера.
• Процес працює занадто довго, не даючи очікуваних результатів.
• Процес виводить занадто багато інформації на екран чи у файл.
• Процес привів до блокування термінала чи іншої сесії.
• Через помилку оператора чи програми використовуються не ті файли чи параметри командного рядка.
• Подальше виконання процесу даремно.
Якщо процес працює не у фоновому режимі, натискання комбінації клавіш <Ctrl+c> повинно перервати його виконання, але, якщо процес фоновий, це не допоможе— перервати його виконання можна тільки за допомогою команди kill.
Нормальнеє завершення фонового процесу
Команда kill посилає сигнал, що вимагає від процесу завершення. Для цього використовуються дві форми:
kill PID(s)
kill -signal PID(s)
Для завершення процесу з ідентифікатором 123 просто введіть kill 123. Для того ж, щоб завершити процеси 123, 231 й 312, уведіть kill 123 231 312.
Опція -signal дозволяє домогтися більшого, ніж просте завершення процесу.
Наприклад, можна змусити процес перечитати конфігураційні файли, не припиняючи роботи. Список доступних сигналів можна одержати за допомогою команди kill -1. Однак звичайному користувачу, як правило, досить застосувати kill без указівки сигналу.
Примітка: Будьте дуже уважні при використовуванні команди kill і застосовуйте тільки коректний ідентифікатор процесу, інакше ви можете завершити не той процесе, що хотіли (завершення якого-небудь системного процесу може привести до самим неприємних наслідків). Памятайте, що, будучи системним адміністратором, ви маєте можливість завершити роботу будь-якого процесу.
При успішному завершенні процесу ніяке повідомлення не виводиться — процеси "вмирають мовчки". Повідомлення з'явиться при спробі завершити процесе, не маючи відповідних прав доступу, чи при спробі завершити неіснуючий процес.
Примітка:У більшості дистрибутивів Linux процесе можна завершувати не по ідентифікаційному номері, а по його імені, використовуючи команду killall.
Завершення батьківського процесу іноді приводить до завершенню дочірнього, однак для повної впевненості в завершень усіх процесів, зв'язаних з даним, указуйте їх у команді kill.
