- •Лабораторна робота №2.
- •Процеси Linux
- •Робота з багатьма процесами
- •Планування запуску команд
- •Планування виконання за допомогою сron і crontab
- •Інформація про стан процесів
- •Моніторинг процесів за допомогою ps
- •Одержання додаткової інформації про процеси
- •Використання команди nohup
- •Зміна пріоритету команд за допомогою nice
- •Зміна пріоритету працюючого процесу за допомогою renice
- •Припинення процесу за допомогою команди kill
- •Нормальнеє завершення фонового процесу
- •Безумовне припинення фонового процесу
- •Завершення усіх фонових процесів
- •Хід роботи
- •Запуск команд у визначений час за допомогою команди at
- •Планування виконання за допомогою сron і crontab
Інформація про стан процесів
Для одержання інформації про стан лроиессов використовується команда 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). Наявність безлічі таких процесів (чи декількох протягом тривалого часу) говорить про те, що в системі щось не в порядку і настав час приймати заходи для виправлення ситуації.
Примітка: Оскільки "зомбі" не мають батьківських процесів, їх можна видалити, тільки перезавантаживши систему.
