русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Завершення процесів


Дата додавання: 2014-11-28; переглядів: 827.


Для примусового завершення активного і фонових процесів використовуються різні способи. Як вже раніше відмічалось, активний процес можна ліквідувати, натиснувши клавіші <CTRL><C> або клавішу DEL.

Для завершення фонового процесу використовується команда kill, яка має кілька форматів:

kill PID

kill -signal PID

kill %n

Ця команда може брати як аргумент номер роботи, або ідентифікатор процесу. Наприклад, для завершення процесу із ідентифікатором PID=237 необхідно виконати команду

kill 237,

а для завершення роботи із номером 20 необхідно виконати команду

kill %20

Для перевірки ліквідації вказаного процесу, можна виконати команду

ps

в результаті чого на екрані дисплея отримаємо відповідь:

237 Terminated

А якщо виконати команду

jobs

тоді теж одержимо аналогічне підтвердження:

[20]+ Terminated

Ключ “-signal” змушує команду kill виконати ряд додаткових послуг, тобто послати процесу певний сигнал. Може бути послано понад 20 сигналів, кожний з яких має свій номер.

При виході користувача із системи, Linux посилає всім його процесам сигнал 1, що змушує всі процеси завершити роботу. За замовчуванням усім процесам посилається сигнал 15.

Якщо ввести команду kill 0, то можна ліквідувати всі фонові процеси.

Якщо який-небудь процес “завис”, тоді потрібно перейти до іншої консолі, і з її допомогою ввести команду kill для ліквідації “завислого” процесу.

Гарантовано можна знищити процес за допомогою сигналу 9, наприклад:

kill -9 125

Звичайний користувач має право припиняти тільки процеси, запущені з його термінала. Длязавершення процесу використовується системний виклик ехit(), при якому звільняються усі використовувані ресурси, зокрема такі, як пам'ять і структури таблиць ядра. Крім того, завершуються і процеси-нащадки, породжені даним процесом.

Потім з пам'яті вилучаються сегменти коду і даних, а сам процес переходить у стан “зомбі” (у полі Stat такі процеси позначаються буквою “Z”). “Зомбі” не займає процесорного часу, але рядок у таблиці процесів залишається, і відповідні структури ядра не звільняються.

Якщо батьківський процес з якоїсь причини завершиться раніше дочірнього, останній стає “сиротою” (orphaned process). “Осиротілий” “зомбі” на короткий час стає нащадком init, після чого вже остаточно “помирає”.

Також, процес може впасти в “сон”, що не вдається перервати (у полі Stat це позначається буквою “D”). Процес, що знаходиться в такому стані, не реагує на системні запити і може бути знищений тільки перезавантаженням системи.


<== попередня лекція | наступна лекція ==>
Створення процесу | Корисна інформація про фонові процеси


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн