- •Лабораторна робота №2.
- •Процеси Linux
- •Робота з багатьма процесами
- •Планування запуску команд
- •Планування виконання за допомогою сron і crontab
- •Інформація про стан процесів
- •Моніторинг процесів за допомогою ps
- •Одержання додаткової інформації про процеси
- •Використання команди nohup
- •Зміна пріоритету команд за допомогою nice
- •Зміна пріоритету працюючого процесу за допомогою renice
- •Припинення процесу за допомогою команди kill
- •Нормальнеє завершення фонового процесу
- •Безумовне припинення фонового процесу
- •Завершення усіх фонових процесів
- •Хід роботи
- •Запуск команд у визначений час за допомогою команди at
- •Планування виконання за допомогою сron і crontab
Робота з багатьма процесами
Програму можна запустити на виконання, просто ввівши її ім'я. Програма також запускається з файлу, що містить сценарій оболонки. Виконувані програми можуть взаємодіяти із самими різними частинами операційної системи — читати і писати файли, працювати з інформацією в оперативній пам'яті і відсилати інформацію на принтер чи модем. Операційна система реєструє виконувану програму для того, щоб за її роботою можна було стежити і керувати нею.
З однієї сторони, процес являє собою виконувану програму, а з інший процес завжди динамічний, оскільки постійно використовує системні ресурси. З інший сторони, одна програма Linux запускає кілька процесів.
Linux відслідковує роботу процесів, назначав кожному з них свій идентифнкатор процесу (Process ID — PID).
Запуск декількох процесів
Як відомо, коли ви знаходитеся в системі, один процес завжди активний — це процес оболонки. Виконуючи ту чи іншу команду, ви запускаєте, як мінімум, ще один процес.
Наприклад, за допомогою наступної команди ви запускаєте процес відправлення файлу report. txt на принтер:
1р report.txt
Після виконання програми 1р знову з'являється запрошення оболонки. У приведеному прикладі оболонка чекає повного завершення програми. Фактично в цей момент уже працюють два процеси — виводу на принтер і чекання кінця роботи першого процесу.
Запуск фонового процесу
Ви можете запустити процес у якості фонового, увівши команду і додавши в її кінці символ амперсанта (&).
Наприклад, програма може бути запущена як фонова задача — при цьому на екран буде виведений її PID; відразу, не чекаючи закінчення роботи запущеного процесу, з'явиться запрошення оболонки:
$ 1р report.txt &
3146
$
Планування запуску команд
Операційна система Linux надає різні можливості контролю виконання команд. Наприклад, можна скласти список команд і визначити, коли вони повинні бути запущені.
Запуск команд у визначений час за допомогою команди at
Для запуску однієї чи більш команд у заздалегідь визначений час використовується команда at. У ній ви можете визначити час і/чи дату запуску тієї чи іншої команди. Команда at вимагає двох (чи більшого числа) параметрів. Як мінімум, варто вказати час запуску і команду, що повинна бути запущена.
Приклад: передані at команди запускаються в 01:23. У цей час будуть роздруковані усі файли каталогу /usr/sales/reports і користувачу boss буде відправлене повідомлення про це. Уведіть усі, наведені нижче, з термінала команди, завершуючи введення кожного рядка натисканням клавіші <Enter>. По закінченні уведення всіх команд натисніть комбінацію клавіш <Ctrl+d> для її завершення.
at 1:23
lp /usr/sales/reports/*
echo "Files printed. Boss!" | mail -s"Job done" boss
Команди для запуску за допомогою at уводяться як список у рядках. Після уведення всіх команд ви побачите на дисплеї щось, подібне
job 756603300-a at Tues Jan 21 01:23:00 1997
Це означає, що зазначені команди будуть запущені, як і було замовлено, у 1:23. Тут приведений також ідентифікатор завдання (756603300.а), що знадобиться, наприклад, якщо ви вирішите скасувати завдання.
Для скасування завдання використовується at з опцією -d:
at -d 756603300.а
Якщо список команд знаходиться у файлі, наприклад, getdone і ви хочете запустити всі перераховані в ньому команди в 10:00, скористайтеся одним із двох варіантів команди at:
at 10:00 < getdone чи at 10:00 -f getdone
Обидві приведені команди еквівалентні. Різниця лише в тім, що перший варіант використовує механізм перенапрямку потоків уведення-виведення (і, наприклад, дозволяє одержати як уведення виведення іншої програми), у той час як другий варіант вимагає наявності дискового файлу.
Крім часу, у команді at може бути також визначена дата, наприклад для запуску завдання в п'ять вечора 24 січня, команда буде виглядати так:
at 17:00 Jan 24
lp /usr/sales/reports/*
echo "Files printed. Boss!" | mail -s"Job done" boss
Завдання, обумовлені вами, містяться в чергу, що операційна система періодично переглядає. Вам необов'язково знаходитися в системі для того, щоб at відробила ваші завдання. Команда at працює у фоновому режимі, і весь вивід запущених нею команд пересилається вам по злектронной пошті.
Для того щоб переглянути чергу завдань, уведіть at -І. Якщо попередні приклади були запущені, ви повинні побачити
ob 756603300.a at Sat Dec 20 01:23:00 1997 job 756604200.a at Sat Jan 24 17:00:00 1998
Ви можете бачити тільки свої завдання при виконанні команди at. Для видалення завдання з черги варто запустити at з параметром -d й номером завдання, що видаляється, наприклад:
at -d 756604200-а
У табл. показані різні варіанти використання команди at.
Формат команди |
Опис |
at hh:mm |
Виконати завдання під час hh:mm у 24-годинному форматі |
at hh:mm місяць день рік |
Виконати завдання під час hh:mm у 24-годинному форматі у відповідний день |
at -1 |
Вивести список завдань у черзі; псевдонім команду — atq |
at now +count time-units |
Виконати завдання через визначений час, що задано параметром count відповідних одиницях — тижнях, днях, годинни,хвилини |
at -d jobJD |
Видалити завдання з ідентифікатором JobJD з черги; псевдонім команди — atnn |
Як суперкористувач, ви можете застосовувати всі ці команди; для інших користувачів права доступу до команди at визначаються файлами /etc/at, allow і /etc/at, deny. Якщо існує файл /etc/at, allow, то застосовувати команду at можуть тільки перераховані в ньому користувачі. Якщо ж такого файлу немає, перевіряється наявність файлу /etc/at, deny і, якщо він є, застосовувати команду at дозволено усім, крім перерахованих у цьому файлі користувачів (іншими словами, командою at заборонено користатися тим, хто згаданий у цьому файлі). Якщо жодного файлу немає, команда at доступна тільки суперкористувачу.
