Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Команды для работы с процессами




Каналы

Сигналы

Механизмы межпроцессного взаимодействия

UNIX имеет большое число механизмов межпроцессного взаимодействия. Наиболее популярны­ми средствами являются сигналы, программные каналы (pipes) и именованные каналы (FIFO).

Сигналы обеспечивают простой метод прерывания работы процессов. Сигналы используются в основном для обработки исключительных ситуаций. Процесс может определять действия выпол­няемые при поступлении сигнала, блокировать сигналы, посылать сигналы другим процессам. Существует более двадцати различных сигналов. Основные:

SIGCHLD

сигнал о завершении дочернего процесса.

SIGHUP

сигнал освобождения линии. Посылается всем процессам, подключенным к управляю­щему терминалу при отключении терминала. Многие демоны при получении данного сигнала заново просматривают файлы конфигурации и перезапускаются.

SIGINT

сигнал посылается всем процессам сеанса, связанного с терминалом, при нажатии поль­зователем клавиши прерывания (CTRL-C).

SIGTERM

сигнал приводит к немедленному прекращению работы получившего сигнал процесса.

SIGKILL

сигнал приводит к немедленному прекращению работы получившего сигнал процесса. В отличие от SIGTERM процесс не может блокировать и перехватывать данный сигнал.

SIGSEGV

сигнал посылается процессу, если тот пытается обратиться к неверному адресу памяти.

 

SIGSTOP

сигнал приводящий к остановке процесса. Для отправки сигнала SIGSTOP активному процессу текущего терминала можно воспользоваться комбинацией клавиш (CTRL-Z).

SIGCONT

сигнал возобновляющий работу остановленного процесса.

SIGUSR1,SIGUSR2

сигналы определяемые пользователем.

Для того, чтобы отправить процессу сигнал можно использовать команду kill. Для того, чтобы процесс мог отправить сигнал другому процессу необходимо чтобы эффективные иденти­фикаторы пользователя у посылающего процесса и у процесса получателя совпадали. Процессы с эффективным идентификатором пользователя равным нулю могут посылать сигналы любым процессам.

Часто возникает ситуация когда два процесса последовательно обрабатывают одни и те же дан­ные. Для обеспечения передачи данных от одного процесса к другому в подобных ситуациях используются программные каналы. Программный канал (pipe) служит для установления связи, соединяющей один процесс с другим. Запись данных в канал и чтение из него осуществляются при помощи системных вызовов write и read, т.е. работа с каналами аналогична работе с файла­ми. Для создания программного канала используется системный вызов pipe. Вызов возвращает два дескриптора файлов, первый из которых открыт для чтения из канала, а второй для записи в канал.

Каналы используются, например, при организации конвейера. При выполнении команды:

find /usr/bin -name a* | sort

создается канал, команда find выводит в него результаты своей работы, а команда sort считывает из этого канала данные для сортировки.

Главным недостатком программных каналов является то, что они могут использоваться толь­ко для связи процессов имеющих общее происхождение (напр., родительский процесс и его потомок). Другой недостаток ограниченное время существования канала (программные каналы уничтожаются после завершения обращающегося к ним процесса).

Именованные каналы идентичны программным в отношении записи и чтения данных, но они являются объектами файловой системы. Именованный канал имеет имя, владельца и права доступа. Открытие и закрытие именованного канала осуществляется как открытие и закрытие любого файла, но при чтении и записи он ведет себя аналогично каналу.

Для создания именованного канала используется команда mkfifo. Если некоторый процесс открывает именованный канал для записи, то этот процесс блокируется до тех пор, пока другой процесс не откроет этот канал для чтения, и наоборот.

ps [-axewjlu] [-o формат ] [-U пользователь ] [-p pid ]

Выводит список и статус процессов работающих в системе. Без аргументов выводит список

процессов текущего пользователя, подключенных к терминалу. Значения параметров следующие:

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

-x вывести информацию о процессах не подключенных к терминалу.

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

-w использовать строки длиной 132 символа. Если указан несколько раз, то строки не обрезаются совсем.

 


-j, -l, -u

меняют формат вывода информации.

-o формат

вывести информацию в указанном формате.

-U пользователь

вывести информацию о процессах указанного пользователя.

-p pid вывести информацию о процессе с указанным идентификатором.

Значение формата для параметра -o является списком из следующих ключевых слов разделен­ных запятыми (без пробелов):

command

командная строка и аргументы.

nice уровень nice (приоритет).

pgid идентификатор группы процессов.

pid идентификатор процесса.

ppid идентификатор родительского процесса.

rgid, ruid

реальные идентификаторы группы и пользователя.

uid реальный идентификатор пользователя.

tty управляющий терминал

Для различных систем параметры и ключевые слова могут сильно различаться. Подробности об использовании ps на конкретной системе можно получить при помощи команды man ps.

kill [-s signal | - signal ] pid

Посылает сигнал указанному процессу. Если значение сигнала опущено, предполагается SIGTERM. signal — символическое имя сигнала без префикса SIG, либо номер сигнала. При­мер: kill -HUP 172 — послать сигнал SIGHUP процессу с идентификатором 172.

nice [- nice ] команда [ аргументы ]

Выполняет команду с меньшим приоритетом. Если nice не задан, то предполагается 10. Значение

nice может быть от -20 (наивысший приоритет) до 20 (наименьший приоритет). Отрицательные

числа задаются как –nice. Увеличение приоритета может выполнить только суперпользователь.

Пример:

nice -10 john users — запустить программу john с пониженным приоритетом.

mkfifo [-m режим_доступа ] имя

Создает именованный канал с указанным именем и режимом доступа.

tty Выводит имя текущего терминала.

who [am i] Выводит список пользователей работающих в системе.

uname [-amnrsv] Выводит информацию о системе.

uptime Выводит время работы системы и ее среднюю загрузку за последние 5, 10 и 15 минут.

 


5 Средства оболочки предназначенные для работы с процес­
сами

Список — последовательность из одного или более конвейеров разделенных операторами;, &, && или ||. Более высокий приоритет у операторов && и ||. Если команда завершается оператором &, то оболочка выполняет ее в фоновом режиме. Если между двумя командами стоит оператор &&, то вторая команда будет выполнена только в том случае, если первая завершится успешно. Если между двумя командами стоит ||, то вторая команда будет выполнена только в том случае, если код завершения первой команды отличен от нуля. Если команды разделены точкой с запятой, то вторая команда будет выполнена после завершения первой, независимо от результата выполнения первой команды.

Оболочка содержит несколько встроенных команд для работы с процессами:

wait [pid]

Ожидает завершения процесса с указаным идентификатором. Если идентификатор опу­щен, то ожидает завершения всех процессов запущеных оболочкой.

exec команда [ аргумент ]...

Указанная команда заменяет оболочку и получает в качестве параметров заданные ар­гументы.

exit [n]

Приводит к завершению оболочки с кодом завершения n. Если арумент опущен, то код завершения ноль.

trap [ действие условие...]

Устанавливает обработчик события. Условие либо EXIT, либо имя сигнала без префик­са SIG. EXIT соответствует завершению работы оболочки. Если действие равно “-”, то обработчик сбрасывается в значение по умолчанию. Например, после выполнения команды:

trap "echo PRESSED" INT

оболочка будет выводить слово PRESSED после каждого нажатия клавиш CTRL-C. (На­жатие клавиш CTRL-C приводит к посылке сигнала SIGINT процессам подключенным к терминалу).




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


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


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



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




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