Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Керування процесами. Сигнали. Команди nice, nohup, kill, killall




План

5.1. Процеси в Linux. Ідентифікатори процесів. Демони. Команда ps

5.2. Права доступу до процесів. Реальний і ефективний ідентифікатори. Біти SUID і SGID

5.3. Керування процесами. Сигнали. Команди nice, nohup, kill, killall

 

5.1. Процеси в Linux. Ідентифікатори процесів. Демони. Команда ps

Що таке процес:

Процес – поняття сукупності програмного коду і даних, завантажених в пам'ять комп'ютера.

Процес це не запущена програма або команда, оскільки програма може створювати декілька процесів одночасно. Код процесу не обов'язково повинен виконуватися у поточний момент часу, оскільки процес може знаходитися в сплячому стані. В цьому випадку виконання коду такого процесу припинене. Існує всього 3 стани, в яких може знаходитися процес:

Працюючий процес – в даний момент код цього процесу виконується.

Сплячий процес – в даний момент код процесу не виконується в очікуванні деякої події (натиснення клавіші на клавіатурі, отримання даних з мережі тощо).

Процес-зомбі – сам процес вже не існує, його код і дані вивантажені з оперативної пам'яті, але запис в таблиці процесів залишається з тих або інших причин.

Кожному процесу в системі призначаються числові ідентифікатори (особисті номери) в діапазоні від 1 до 65535 (PID – Process Identifier) і ідентифікатори батьківського процесу (PPID – Parent Process Identifier). PID є ім'ям процесу, по якому ми можемо адресувати процес в операційній системі при використанні різних засобів перегляду і управління процесами. PPID визначає родинні стосунки між процесами, які в значній мірі визначають його властивості і можливості. Інші параметри, які необхідні для роботи програми, називають "оточення процесу". Одним з таких параметрів є управляючий термінал, його мають далеко не всі процеси. Процеси, не прив'язані до якогось конкретного терміналу називаються " демонами " (daemons). Такі процеси, будучи запущеними користувачем, не завершують свою роботу після закінчення сеансу, а продовжують працювати, оскільки вони не пов'язані ніяк з поточним сеансом і не можуть бути автоматично завершені. Як правило, за допомогою демонів реалізуються серверні служби, так, наприклад, сервер друку реалізований процесом-демоном cupsd, а сервер журналювання – syslogd.

Для перегляду списку процесів в Linux призначена команда ps.

ps [PID] options – перегляд списку процесів. Без параметрів ps показує всі процеси, які були запущені протягом поточної сесії, за винятком демонів. Параметр Options може приймати одне з наступних значень або їх комбінації:

-A або -і – показати всі процеси

-f – відсортувати за абеткою

- w – показати повні рядки опису процесів. Якщо вони перевершують довжину екрану, то перенести опис на наступний рядок.

Параметр -ww - дозволити прибрати взагалі всі обмеження на довжину рядка, що відображується, і робити вивід в 2 і більше рядки, при необхідності.

 

Приклад 1:

[gserg@WEBMEDIA gserg]$ ps

PID TTY TIME CMD

3126 pts/2 00:00:00 bash

3158 pts/2 00:00:00 ps

[gserg@WEBMEDIA gserg]$_

 

Приклад 2:

[gserg@WEBMEDIA gserg]$ ps 3126

PID TTY STAT TIME COMMAND

3126 pts/2 S 0:00 /bin/bash

[gserg@WEBMEDIA gserg]$_

 

Приклад 3:

[gserg@WEBMEDIA gserg]$ ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 10:01? 00:00:03 init [5]

root 2 1 0 10:01? 00:00:00 [keventd]

root 3 1 0 10:01? 00:00:00 [kapmd]

root 4 1 0 10:01? 00:00:00 [ksoftirqd_CPU0]

root 5 1 0 10:01? 00:00:24 [kswapd]

root 6 1 0 10:01? 00:00:00 [bdflush]

...

gserg 3126 3124 0 17:56 pts/2 00:00:00 /bin/bash

gserg 3160 3126 0 17:59 pts/2 00:00:00 ps -ef

[gserg@WEBMEDIA gserg]$_

 

Приклад 4:

[gserg@WEBMEDIA gserg]$ ps -efw

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 10:01? 00:00:03 init [5]

root 2 1 0 10:01? 00:00:00 [keventd]

root 3 1 0 10:01? 00:00:00 [kapmd]

root 4 1 0 10:01? 00:00:00 [ksoftirqd_CPU0]

root 5 1 0 10:01? 00:00:24 [kswapd]

root 6 1 0 10:01? 00:00:00 [bdflush]

root 7 1 0 10:01? 00:00:00 [kupdated]

root 8 1 0 10:01? 00:00:00 [mdrecoveryd]

root 12 1 0 10:01? 00:00:00 [kjournald]

root 115 1 0 10:01? 00:00:00 devfsd /dev

root 211 1 0 10:01? 00:00:00 [khubd]

root 334 1 0 10:01? 00:00:00 [kjournald]

root 594 1 0 10:01? 00:00:00 [eth0]

root 730 1 0 10:01? 00:00:00 /sbin/dhcpcd -h WEBMEDIA -Y -N eth0

root 772 1 0 10:02? 00:00:00 /sbin/dhcpcd -h WEBMEDIA -Y -N eth0

rpc 820 1 0 10:02? 00:00:00 portmap

root 836 1 0 10:02? 00:00:00 syslogd -m 0

root 844 1 0 10:02? 00:00:00 klogd -2

root 879 1 0 10:02? 00:00:00 gpm -t ps/2 -m /dev/psaux

xfs 1074 1 0 10:02? 00:00:07 xfs -port -1 -daemon -droppriv -user xfs

root 1130 1 0 10:02? 00:00:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmd_proxy

......

gserg 3122 2072 0 17:56? 00:00:00 xmms

gserg 3123 2072 1 17:56? 00:00:03 xmms

gserg 3124 1914 0 17:56? 00:00:02 kdeinit: konsole -icon konsole.png -miniicon konsole.png

gserg 3126 3124 0 17:56 pts/2 00:00:00 /bin/bash

gserg 3172 3126 0 18:01 pts/2 00:00:00 ps -efw

[gserg@WEBMEDIA gserg]$_

 

5.2. Права доступу до процесів. Реальний і ефективний ідентифікатори. Біти SUID і SGID

Процеси в ОС Linux мають ті самі права, як і користувач, від чийого імені був запущений процес.

Для визначення імені користувача, що запустив процес, операційна система використовує реальні ідентифікатори користувача і групи, що призначаються процесу. Але ці ідентифікатори не є вирішальними при визначенні прав доступу. Для цього в кожного процесу існує інша група ідентифікаторів – ефективні.

Як правило, реальні і ефективні ідентифікатори процесів однакові, але є і виключення. Наприклад, для роботи утиліти passwd необхідно використовувати ідентифікатор суперкористувача, оскільки лише суперкористувач має права на запис у файли паролів. В цьому випадку ефективні ідентифікатори процесу відрізнятимуться від реальних. Виникає резонне питання – як це реалізовано?

В кожного файлу є ще один набір прав доступу – біти SUID і SGID. Ці біти дозволяють при запуску програми привласнити їй ефективні ідентифікатори власника і групи-власника відповідно і виконувати процес з правами доступу іншого користувача. Оскільки файл passwd належить користувачеві root і у нього встановлений біт SUID, то при запуску процес passwd буде мати права користувача root.

Встановлюються біти SGID і SUID програмою chmod:

chmod u+s filename – установка біта SUID

chmod g+s filename – установка біта SGID

Для установки цих бітів в абсолютному режимі їх варто представити у вигляді трьох біт: SUID, SGID, Sticky bit відповідно.

Після встановлення необхідних прав додайте в початок числа цифру для установки спеціальних біт:

 

Приклад 5:

[gserg@WEBMEDIA gserg]$chmod 7777 filename

[gserg@WEBMEDIA gserg]$ls filename

-rwsrwsrwt 1 gserg gserg 23811 Aug 29 11:00 filename

[gserg@WEBMEDIA gserg]$

 

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

Батьком всіх процесів в системі є процес init. Його PID завжди 1, PPID – 0. Всю таблицю процесів можна уявити собі у вигляді дерева, в якому коренем буде процес init. Цей процес хоч і не є частиною ядра, але виконує в системі дуже важливу роль.

Процеси, імена яких поміщені в квадратні дужки, наприклад "[keventd]" - це процеси ядра. Ці процеси управляють роботою системи, а точніше такими її частинами, як менеджер пам'яті, планувальник часу процесора, менеджери зовнішніх пристроїв тощо.

Решта процесів є процесами користувача, запущеними або з командного рядка, або під час ініціалізації системи.

Життя кожного процесу представлене наступними фазами:

Створення процесу – на цьому етапі створюється повна копія того процесу, який створює новий. Наприклад, ви запустили з інтерпретатора на виконання команду ls. Командний інтерпретатор створює свою повну копію.

Завантаження коду процесу і підготовка до запуску – копія, створена на першому етапі замінюється кодом завдання, яке необхідно виконати і створюється її оточення, – встановлюються необхідні змінні і тому подібне.




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 535; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.