Основным средством управления процессами является команда kill, передающая процессу сигналы. Также можно использовать вышеописанные программы изменения приоритета процесса, прежде всего, команду nice, для управления приоритетом.
Не следует путать команду kill с сигналом KILL - они просто тезки; с помощью одноименной команды можно передать процессу как сигнал KILL, так и любые другие сигналы.
Будучи запущенной без ключей, она передает процессу сигнал TERM, требующий завершения процесса:
kill [-ключи] номер_процесса
Например, для завершения процесса sendmail можно выполнить следующие действия:
:
ps auxw | grep sendmail
root 2057 0.0 0.2 2664 444 ? S Jul08 3:24 sendmail:
accepting connections
Как видно, sendmail имеет PID 2057. Посылаем сигнал, требующий завершения процесса:
kill 2057
И повторяем последнее действие для проверки (контрольный выстрел):
kill 2057
kill: (2057) - No such pid
Сообщение No such pid говорит о том, что процесс уже завершился.
Программу kill можно использовать для передачи любых сигналов. Чтобы передать некий сигнал, надо указать в качестве ключа числовое или мнемоническое обозначение этого сигнала.
Например, после изменений, внесенных в файл конфигурации /etc/inetd.conf, следует потребовать от демона inetd перечитать этот файл конфигурации.
Это можно сделать, послав демону сигнал HUP (номер один), так как известно, что этот демон перечитывает файлы конфигурации, если получаетсигнал с номером 1. Вначале надо узнать идентификатор процесса, которому будем посылать сигнал:
ps -ef | grep inetd
root 156 1 0 17:43:44 ? 0:00 /usr/sbin/inetd -s
root 4555 760 0 19:15:16 pts/5 0:00 grep inetd
Мы видим два процесса, в строках информации о которых есть слово inetd. Первая строка, grep inetd - это тот самый процесс grep, который мы только что сами запустили. Программы ps и grep запустились одновременно, и ps показал "мгновенный снимок" таблицы процессов.
Строка grep inetd в таком случае должна была бы показываться всегда, но на практике иногда мы не видим ее при запуске такой команды. Проведите эксперимент: возможно, что в вашей системе (это зависит от ее скорости и текущей загрузки) вы никогда не увидите строку grep или наоборот, будете ее видеть всегда.
Это связано с тем, что физически запуск grep происходит чуть-чуть позже, чем ps, последняя может успеть завершиться раньше, чем grep начнется (ведь таблица процессов может оказаться маленькой и работы у ps будет мало). Тогда строки про grep в списке найденных процессов не будет.
Теперь пошлем сигнал процессу inetd :
kill -1 156
Помните, не все демоны и не во всех системах по сигналу HUP перечитывают свой файл конфигурации. Прежде чем посылать демону сигналы, выясните, как он на них собирается реагировать: почитайте в man о его повадках.
Владелец процесса может посылать сигналы своему процессу, но привилегированный пользователь (root) может отправить любой сигнал любомупроцессу.
Посылка сигнала KILL (номер 9) вызывает безусловное немедленное завершение процесса:
kill -9 PID
или
kill -KILL PID
При выполнении команды kill лучше указывать мнемонические обозначения сигналов, а не числовые: в разных системах UNIX сигналы с одним и тем же числовым номером могут иметь разный смысл. Впрочем, можно смело руководствоваться вышеприведенными таблицами в разделе "сигналы" в отношении сигналов в Solaris.
Для посылки сигнала нескольким процессам одновременно следует использовать программы pkill или killall (их подробное описание приведено в разделе "Сигналы" выше в этой лекции).
При запуске процесса можно менять его базовый приоритет внутри класса планирования. Это возможно только для класса планирования разделения времени. Обычный пользователь может только понижать приоритет процесса, а привилегированный пользователь может менять NICE в обе стороны. Для этого используется команда nice, которая в разных системах имеет разные ключи и немного разный синтаксис.
В Solaris она выглядит так:
nice -n приращение команда
например
nice -n 5 ls
Это "5" воспринимается как увеличение значения NICE на 5, т.е. снижение приоритета на 5 единиц. Пользователь root может дать команду вида nice -n -4 ls. Это будет воспринято как увеличение базового приоритета, т.е. уменьшение значения NICE на 4.
Базовый приоритет уже запущенного процесса можно менять командой renice:
renice -n приращение PID
Команда renice может быть использована также для изменения приоритета группы процессов по разным признакам, для уточнения обратитесь к man renice.
Заданием называют запущенные одной командой несколько программ (в частном случае это может быть и одна программа). Для управления заданиями можно использовать встроенные команды командных интерпретаторов. Так, в большинстве из них есть команды jobs, bg и fg - для получения информации о заданиях, переключении задания в фоновый или интерактивный режим соответственно.
Комментариев нет:
Отправить комментарий