Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен UNIX.docx
Скачиваний:
25
Добавлен:
11.06.2015
Размер:
532.39 Кб
Скачать

Посылка сигналов

Для посылки сигналов из командного интерпретатора используется команда kill. Она имеет следующий синтаксис:

kill [ -сигнал ] pid ...

Эта команда посылает указанный сигнал (по умолчанию - SIGTERM) всем процессам с указанными идентификаторами. Посылать сигнал можно и не существующему процессу - выдается предупреждение, но другим процессам сигнал посылается. Посылаемый сигнал задается по имени без префикса SIG или по номеру, например:

[kravchuk@arturo 16:56:55 /]$ echo $$

3697

[kravchuk@arturo 16:56:58 /]$ kill -STOP 3697

В результате текущий сеанс зависает.

19.Команды управления процессами

Сигналы, посылка сигналов, команда kill

Для управления процессами в системе предусмотрена команда kill.

Формат этой команды kill <-сигнал> pid, где <-сигнал> - номер или символьное имя посылаемого процессу сигнала. Команду kill чаще всего используют для прекращения выполнения процесса. Наиболее часто используемые сигналы:

9 (KILL) - гарантированное уничтожение процесса

15 (TERM) - программное завершение процесса

1 (HUP) - сигнал отбоя. Многие системные процессы при получении этого сигнала перечитывают свои конфигурационные файлы. Вообще рекомендуется давать сигнал HUP перед посылкой сигнала KILL.

Иногда, правда редко, процессы впадают в такие состояния, что их нельзя "убить" даже выдав команду kill -9 pid.

В этом случае самый эффективный способ "убить" процесс - команда reboot.

Приоритет выполнения процесса, команда nice

От приоритета процесса зависит, какую часть времени центрального процессора он получит. Выбирая процесс для выполнения, ядро находит процесс с самым высоким "внутренним приоритетом". Непосредственно изменить значение внутреннего приоритета невозможно, но можно повлиять на него, изменяя так называемое nice-значение.

Для этой цели используется команда nice. Формат этой команды:

nice <относительный приоритет от процесса-родителя> <команда>. Относительный приоритет в системе FreeBSD находится в пределах от -20 до +20.

Важно запомнить: Чем ниже значение nice - тем выше приоритет процесса.

Пример:

# nice -10 /usr/local/mygame

Если пользователь не предпримет особых мер, то новый процесс унаследует приоритет своего родителя. Пользователь может увеличить значение nice (т.е. понизить приоритет), но не сможет уменьшить его, даже для возврата процесса к приоритету, полученному при "рождении".

Привилегированный пользователь может менять приоритеты процессов как угодно, вплоть до того, что все процессы не смогут работать из-за одного единственного.

В системе FreeBSD существует команда renice, с помощью которой можно изменить приоритет уже запущенному процессу. Ее формат:

renice <приоритет> [-p pid] [-g <группа>] [-u <пользователь>]

Пример:

# renice +1 -p 989 -u daemon root -p 32

В примере понижается на 1 приоритет процессов с номерами PID 989 и 32, а так же у всег процессов, владельцами которых являются daemon и root.

Текущий контроль процессов, команды ps и top

Для текущего контроля состояния процессов в системе используется команда ps.

Если она введена без опций, то покажет только собственные процессы пользователя и процессы обмена с терминалом. Команда имеет опции:

-a - выдает информацию о всех пользовательских процессах

-е - показывает значения переменных окружения

-h - при выводе на PAGER (more или less) выводит заголовок листинга

-m - сортирует вывод по используемой памяти

-r - сортирует вывод по использованию времени центрального процессора

-x - вывод команды не ассоциирован с терминалами (т.е. показываются также например и процессы-демоны)

Наберите команду

# ps -ax

Посмотрим на листинг (здесь показана для краткости только одна строчка помимо заголовка и только часть полей):

USER PID STAT START TIME COMMAND

bob 1167 R+ 5:57PM 0:00.04 ps -ax

USER - имя владельца процесса

PID - идентификатор процесса

STAT - текущий статус процесса

R = выполнимый, T = остановленный

I = ожидающий, S = ожидающий (> 20 сек)

Z = зомби

Дополнительные флаги:

W = процесс свопирован

+ = процесс в приоритетном режиме своего терминала

START - время запуска процесса

TIME - время центрального процессора, потребленное процессом

COMMAND - имя и аргументы команды

Для самостоятельного изучения вам дается команда top.

Вывод этой команды аналогичен выводу команды ps.

Замечу только использование команды top - довольно дорогое удовольствие, т.к. она сама "пожирает" довольно много ресурсов системы. Не стоит ею злоупотреблять.