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

Завдання для самостійної підготовки

1. Вивчити:

  • поняття процесу і його характеристики;

  • вивід на екран списку процесів і його аналіз;

  • фонові й активні процеси;

  • пріоритет процесів і його зміна;

  • відправлення сигналів процесам, організація перехоплення сигналів;

  • виконання завдань у системі в заданий час і з заданою періодичністю.

2. Ознайомитись з такими командами UNIX: ps, kill, fg, bg, jobs, crontab, at. Зверніть увагу на використання параметру командного рядка "&" .

Порядок виконання роботи

По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.

Зміст звіту

  1. Початкові дані і постановка задачі.

  2. Текст програми.

  3. Висновки.

Методичні вказівки

Команди, що поступають від користувачів, називають завданнями, щоб відрізнити їх від системних процесів. Багато командних оболонок (включаючи bash) мають функції управління завданнями. Управління завданнями дозволяє запускати одночасно декілька команд або завдань і здійснювати управління ними. Є можливість:

Запускати команди у фоновому режимі, одночасно виконуючи інші команди

Переривати команди

Відновлення її роботи з тієї точки, де вона була перервана

Процеси мають декілька атрибутів, які дозволяють ОС управляти його роботою:

PID – ідентифікатор процесу це його унікальний номер, який присвоюється йому системою при створенні.

PPID – ідентифікатор батьківського процесу

NI приорітет - відносний пріорітет враховується при створенні черги на виконання планувальником

TTY термінальна лінія – Термінал або псевдотермінал, асоційований з процесом. Процеси – демони його не мають.

EUID – эфективий ідентифікатор служить для визначення прав доступу до системних ресурсів.

USER — ім’я власника процесу;

CPU — частка часу центрального процесора (у відсотках), виділеного даному процесу;

MEM — доля реальної пам’яті (в відсотках), використовувана даним процесом;

VSZ — віртуальний розмір процесу (в кілобайтах);

RSS — розмір резидентного набору (кількість 1K-сторінок в пам’яті);

STIME — час старту процесу;

TTY — вказівка на термінал, з якого запущений процес;

S или STAT — статус процесу;

PRI — пріоритет планування ;

CMD ім’я команди

В полы “Статус процесу”, можуть стояти наступні значення:

R — здійснимий процес, чекаючий тільки моменту, коли планувальник завдань виділить йому черговий квант часу;

S — процес "спить";

D — процес знаходиться в станы підкачки на дискі;

T — зупинений процес;

Z — процес-зомбі.

Команди керування завданнями

Команда ps – список процесів, що протікають в даний час, і інформацію про них

-ax отримати список всіх процесів

-e всі процеси в системі, використовуючи стандартну форму виводу

-o вибір окремих полів для виводу

-f всі процеси в системі, із застосуванням графічного відображення відношення "предок-нащадок":

ps –eo pid,user,cmd

ps -ef

ps -af

& - переводить команду в фоновий режим

Для запуску процесу у фоновому режимі в кінці командного рядка запуску програми додають символ &.

Тільки пріоритетні процеси дозволяють читання з терміналу або запис на нього. При спробі фонового процесу що-небудь прочитати з терміналу або записати на нього його драйвер посилає сигнал SIGTTIN (SIGTTOU), який, будучи отриманий, зупиняє процес.

Команда jobs - видає список фонових завдань

Показує завдання, запущені з поточного екземпляра shell. На початку кожного рядка виведення цієї команди вказується порядковий номер завдання у вигляді числа в квадратних дужках. Після номеру вказується стан процесу:

stopped (зупинений),

running (виконується ) або

suspended (призупинений).

fg %<n> - переводить задачу з фонового в пріоритетний режим

bg %<n>- переводить задачу в фоновому режимі зі стану Stoppped в стан Running.

[ctrl + z] – перериває задачу і переводить її в фоновий режим в стан “Stopped”

kill %<n> - відміняє завдання, яке виконується в фоновому режимі

Команда top

Команда ps дозволяє зробити як би "миттєвий знімок " процесів, запущених в системі. На відміну від ps команда top відображає стан процесів та їх активність "в реальном режимі часу".

Вміст вікна оновлюється кожні 5 секунд. Список процесів може бути відсортований по використовуваному часу ЦПУ (за умовчанням), по використанню пам'яті, по PID, за часом виконань. Перемикати режими відображення можна за допомогою команд, які програма top сприймає. Це наступні команди (просто натискайте відповідні клавіші, тільки з урахуванням регістру, тобто разом з клавішею Shift):

<Shift>+<N> — сортування по PID;

<Shift>+<A> — сортувати процеси за віком;

<Shift>+<P> — сортувати процеси по використанню CPU;

<Shift>+<M> — сортувати процеси по використанню пам’яті;

<Shift>+<T> — сортування за часом виконання.

Команда renice

renice <приорітет> <pid процесу>

Служить для зміни значення nice для процесів, що вже виконуються. Пріоритет для кожного процесу встановлюється в той момент, коли процес породжується. Пріоритет процесу визначається так званим "значенням nice", яке лежить в межах від +20 (найменший пріоритет, процес виконується тільки тоді, коли ніщо інше не займає процесор), до -20 (найвищий пріоритет)

Команда kill

kill [-сигн] PID [PID..]

Сигнали — це засіб , за допомогою якого процесам можна передати повідомлення про деякі події в системі. Самі процеси теж можуть генерувати сигнали, за допомогою яких вони передають певні повідомлення ядру і іншим процесам. За допомогою сигналів можна здійснювати такі акції управління процесами, як припинення процесу, запуск припиненого процесу, завершення роботи процесу. Всього в Linux існує 63 різних сигнали, їх перелік можна подивитися по команді.

kill –l

Основні сигнали

Ім’я

Опис

1

HUP

Hangup. Відбій

2

INT

Interrupt. В випадку виконання простих команд визиває

припинення виконання, в інтерактивних програмах –

припинення активного процесу

9

KILL

Завжди припиняє виконання процесу

15

TERM

Software Termination. Вимога закінчити процес

(програмне завершення)

18

CONT

Продовження виконання припиненого процесу

19

STOP

Припинення виконання процесу

Віртуальна файлова система /proc

Unix підтримує файлова система /proc. За допомогою цієї файлової системи можна отримати безліч цінних відомостей про стан різних пристроїв і системних об'єктів (модулів ядра, наприклад) а також про процеси, що виконуються (власне, звідси і відбувається її назва).

Файлова система /proc являється механізмом для ядра і його модулей, які дозволяють надіслати інформацію процесам ( звідси і назва /proc ). За допомогою цієї віртуальної файлової системи Ви можете працювати з внутрішніми структурами ядра, отримувати корисну інформацію про процеси і змінювати установки ( міняючи параметри ядра ) на льоту. Файлова система /proc розташовується в пам'яті на відміну від інших файлових систем, які розташовуються на диску.

Данні про кожен процес зберігаються в спеціальній піддиректорії директорії /proc, з ім’ям, яке відповідає численому значенню ідентифікатора процесу. В директорії процесу знаходяться декілька файлів і піддиректорій, з яких можна черпнути данні про нього:

Элемент

Тип

Зміст

сmdline

файл

Командний рядок, який використовувався при запуску процесу.

сwd

символічна ссилка

Вказує на директорію процесу

environ

файл

Список змінних оточення для данного процесу

exe

символічна ссилка

Вказує на файл, який зберігає образ процесу

fd

директорія

Ссилки на файли,які використовуються процесом

root

гнучка ссилка

Вказує на корінь файлової системи процессу

stat(status)

файл

Різні відомості про процес. змінні оточення цього процесу, а також ідентифікатор користувача ( UID ) і групи ( GID ) того, що запустив процес, ідентифікатор батьківського процесу ( PPID ) і поточний стан процесу (State)( наприклад "Sleeping" або "Running" ).

В директорії /proc є декілько файлів¸ які описують систему взагалі

cpuinfo

файл

інформація про процесор ( модель, сімейство, розмір кеша і т.д. model name cpu MHz cache size )

meminfo

файл

інформація про RAM, розмірі свопа и т.д. (MemTotal – скільки пам'яті всього)

Усередині каталога /proc - каталоги, назви яких складаються з цифр - це і є інформація про процеси - назву каталога відображає ідентифікатор процесу ( PID ). Усередині цих каталогів знаходяться файли, що містять важливу інформацію про процеси, - стан, оточення і т.д.

Якщо ви не root, то доступ до багатьох піддиректорій процесів буде вам заборонено, але до своєї власної піддиректорії процес може отримати доступ завжди.

Приклад запуску фонових завдань

1. Створимо сценарій sc1, який працює довго

Наприклад:

while (true)

do

date >> log

sleep 60

done

2. Запуск на виконання в фоновому режимі

$ sc1 &

3. Команда jobs видає їх список

$ jobs

[1] + … sc1 відпрацьовується зараз

4. Переведемо з фонового в пріоритетний:

$ fg %1

5. Переведемо з пріоритетного в фоновий, для цього треба призупинити

[ctrl + z]

$ jobs

[1] + Stopped

6. Призупинене завдання можна поновити і в придбаному , і в фоновому режимі.

$ bg %1

$ jobs

7. Якщо треба зупинити завдання, що виконується у фоновому режимі, це можна зробити за допомогою команди kill

$ jobs

$ kill %1

$ jobs

Команда at - відкладене виконання.

Замість того, щоб переводити команду у фоновий режим, можна вказати час, коли її потрібно виконати.

$ at <аргумент>

<команда>

ctrl-D

<аргумент>: момент часу.

am – до півдня

pm - після

Можна вказати дату, а якщо її немає, передбачається поточний день. Наприклад:

1. $ at 11:00 am в 11 ранку виведеться Hello

echo Hello

ctrl-D

2. Можна використовувати скрипт

echo Hello > sc1

$ at 13:15 < sc1

$ at 13:15 -f sc1

$ at noon -f sc1 – о півдні

$ at noon tomorrow -f sc1 – о півдні завтра

$ at noon Friday -f sc1 - о півдні в п’ятницю

$ at 8:15 pm Nov 29 -f sc1 - в 8.15 вечора 29 листопада

Контрольні запитання

  1. Що такое процес ?

  2. Які атрибути є у процеса ?

  3. В яких станах може знаходитися процес?

  4. Що таке фоновий режим ?

  5. Які команди служать для роботи з задачами в фоновому режимі ?

  6. Які команди дозволяють отримати інформацію про процеси ?

  7. Які сигнали ви знаєте ? Їх призначення ?

  8. Призначення файлової системи /proc?

Лабораторна робота №6

Тема: «Програмування в bash.

Основні прийоми написання команд»

Мета

Оволодіння практичними навичками професійної роботи з командною оболонкою shell – використання основних керуючіх структур.

Завдання для самостійної підготовки

1. Вивчити:

  • використання позіційних змінних;

  • організацію командних файлів: передача параметрів, умовні розгалуження і цикли;

  • побудову програмних каналів.

2. Детально ознайомитись з довідкової системи man з такими

командами UNIX: set, unset, test, let, break, continue.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]