Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота3_2.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
179.71 Кб
Скачать

Інформація про стан процесів

Для одержання інформації про стан лроиессов використовується команда ps. Вона може видавати інформацію про запущені процеси — які з них виконані, які визвали проблеми в системі, як довго виконується той чи інший процес, які він зажадав системні ресурси, ідентифікатор процесу (який буде необхідний, наприклад, для припинення роботи процесу за допомогою команди kill) і т.д. Будучи запущеної без опцій командного рядка, ps видає список процесів, породжених вами.

Моніторинг процесів за допомогою ps

Найбільш розповсюджене призначення ps — відстеження роботи фонових і інших процесів у системі. Оскільки в більшості випадків фонові процеси ніяк не взаємодіють ні з екраном, ні з клавіатурою, ps залишається основним засобом спостереження за ними.

Команда ps виводить чотири основних поля інформації для кожного процесу, що перераховані в табл.

Таблиця Вивід команди ps

Поле

Опис

PID

Ідентифікатор процесу

ТТY

Термінал, з якого був запущений процес

TIME

Час роботи процесу

COMMAND

Ім'я виконуємої команди

Припустимо, ви хочете відсортувати файл sales, dat, зберегти копію відсортованого файлу під ім'ям sales, srt і переслати результати сортування користувачу sarah. Крім того, ви запускаєте все це у фоновому режимі, увівши

sort sales.dat | tee sales.srt | mailx -s"Sorted sales" sarah &

При цьому команда ps поверне приблизно наступну інформацію:

PID TTY TIME COMMAND :

16490 tty02 0 15 sort 16489 tty02 0 00 mailx 16492 tty02 0 00 ps 16478 tty02 0 00 bash 16491 tty02 0 06 tee 16480 tty02 96 45 cruncher

Ви бачите ідентифікатор кожного процесу, час його роботи і команду, за допомогою якої він запущений. Зверніть увагу, що всі команди, запущені за допомогою системи каналів, запускаються одночасно. Остання команда в списку працює більш півтори годин. Якщо це нехарактерно для неї то означає, що виникли проблеми, її виконання можна припинити за допомогою команди kill. Якщо при черговому запуску ps ви побачите приведений нижче текст, виходить, фоновий процес завершив свою роботу.

PID TTY TIME COMMAND 16492 tty02 0:00 ps 16478 tty02 0:00 bash 16480 tty02 99:45 cruncher

Одержання додаткової інформації про процеси

Іноді вам недостатньо виведеної інформації. У такому випадку для її одержання скористайтеся приведеними в табл. опціями команди ps (більш детально про зтом можна довідатися, увівши man ps).

Таблиця Деякі опції команди рs

Опція

Опис

-a

Показати процеси всіх користувачів

-c

Ім'я команди з перемінного середовища task struct

Показати оточення

-f

Показати процеси і підпроцеси

-h

Вивід без заголовка

-j

Формат завдань

-1

Довгий формат виводу

-m

Вивід інформації про пам'ять

-n

Числовий вивід інформації

-r

Тільки працюючі процеси

-s

Формат сигналів

-S

Додати час використання процесора породженими процесами

-txx

Тільки процеси, зв'язані з xx терминалом

-u

Формат виводу з указівкою користувача

-V

Формат віртуальної пам'яті

-W

"Широкий" вивід, без обрізки інформації для розміщення в одному рядку

-X

Показати процеси без контролюючого термінала

Варто усвідомлювати те, що команда ps працює подібно фотоапарату, що видає знімок процесів у деякий момент, і що в наступний момент стан процесів може різко змінитися.

Приклади використання команди ps. Допустимо, що без опцій команда ps вивела наступну інформацію:

$ ps

PID TTY TIME COMMAND

65 ttyOl 0:07 -bash

71 ttyOl 0:14 sort inventory

231 ttyOl 0:09 ps

Тоді при виводі додаткової інформації ми побачимо

$ ps -uах

UID PID PPID З STIME TTY TIME COMD

amanda 65 1 0 11:40:11 ttyOl 0:06 -bash

amanda 71 65 61 11:42:01 ttyOl 0:14 sort inventory

amanda 231 65 80 11:46:02 ttyOl 0:00 ps -f

У цьому листінгу є присутнім, крім стовпця PID, стовпець PPID, що вказує ідентифікатор батьківського процесу для поточного (тут перший процес служить батьком для двох інших). Стовпець С показує використання процесорного часу тим чи іншом процесом, а STIME — час запуску процесу.

Для виводу інформації про процеси того чи іншого користувача можна застосувати цю ж команду з перенапрямком виводу за допомогою каналів команді grep. Наприклад, для одержання інформації про свої процеси введіть

ps -uax I grep $LOGNAME

Для того щоб одержати інформацію тільки про процеси, зв'язаних, наприклад, з першим і другим терміналами, скористайтеся опцією -t:

$ ps -t “1 2”

PID TTY TIME COMMAND

32 ttyOl 0;05 bash

36 tty02 0:09 bash

235 tty02 Оііб vi calendar

У даному прикладі опція -t забороняє вивід інформації про всі процеси, не зв'язаних з терміналами tty0l і tty02.

Іноді процес позначається як <defunct>. Це означає, що процес припинено і його батьківський процес хоча і сповіщений при цьому, але з якихось причин не розпізнав повідомлення. Такі процеси іменуються зомбі (zombie). Наявність безлічі таких процесів (чи декількох протягом тривалого часу) говорить про те, що в системі щось не в порядку і настав час приймати заходи для виправлення ситуації.

Примітка: Оскільки "зомбі" не мають батьківських процесів, їх можна видалити, тільки перезавантаживши систему.