Настройка и работа в Linux




Исследуем процессы Часть 2 - часть 2


/p>

Некоторые из сигналов использовались пользователями столь часто, что получили свои клавиатурные сокращения. Для просмотра этих сокращений посмотрите четыре последние строки вывода команды stty -e: stty -e discard dsusp eof eol eol2 erase intr kill lnext ^O ^Y ^D <undef> <undef> ^H ^C ^U ^V min quit reprint start status stop susp time werase 1 ^\ ^R ^Q ^T ^S ^Z 0 ^W

Символ «^» означает что вы должны нажать клавишу «ctrl», а затем указанную за ним букву. Обратите внимание, что три сигнала были привязаны к управляющим последовательностям:

  • ^C привязан к сигналу INT (сигнал 2)
  • ^\ привязан к сигналу QUIT (сигнал 3)
  • ^Z привязан к сигналу TSTP (сигнал 18, хотя здесь он называется susp)

Не путайте слово «kill» в выводе команды stty с сигналом KILL (сигнал 9). Комбинация ^U удаляет строку, а не шлет сигнал номер 9. Для того что бы в этом убедиться, напечатайте в командной оболочке длинную строку, а затем нажмите ^U.

Но как послать сигнал, который не имеет соответствующей комбинации клавиш? Используйте для этого команду kill. whatis kill kill(1) - terminate or signal a process (уничтожение или сигнализация процессу) kill(2) - send signal to a process (послать сигнал процессу)

Есть пара способов использования команды kill. Если вы просто напечатаете: kill PID

то по умолчанию процессу с идентификатором PID будет послан сигнал TERM. Если вы хотите послать какой-нибудь другой сигнал, то в команде укажите его название или номер: kill -название_сигнала PID

или kill -номер_сигнала PID

Таким образом команды kill PID

kill -TERM PID

kill -15 PID

эквивалентны. Не забывайте, что в UNIX имеет значение регистр набранных команд, если вы напечатаете: kill -term PID

то получите следующее сообщение об ошибке: term: Unknown signal; kill -l lists all signals.

Итак теперь мы знаем о каждом из 31 возможных сообщений, а так же можем посылать их различным процессам. Давайте рассмотрим причины, по которым вам может потребоваться послать процессу сигнал. Когда вы прорабатываете какой-нибудь вопрос используя FreeBSD Handbook или другое руководство, их авторы часто обучают как и что менять в тех или иных конфигурационных файлах, а затем говорят вам о необходимости послать сигнал HUP. Дело в том, что большинство процессов прочитывают свои конфигурационные файлы только при первоначальном запуске. Сигнал HUP говорит процессу, что он должен прекратить выполнение. После того как процесс перезапустится, он перечитает конфигурационные файлы и внесенные в них изменения вступят в силу. Аналогичным образом, когда вы выходите командой logout из терминала, сигнал HUP рассылается всем процессам, которые были запущены на этом терминале. Это значит, что все процессы которые выполнялись на этом терминале будут остановлены.

Иногда вы можете запустить процесс и захотеть его остановки, до того, как он завершится в штатном режиме. Например в приливе вдохновения вы можете решить, что вам необходимо посмотреть имена всех файлов в вашей системе. Это можно сделать написав следующее: find / -print | more




Содержание  Назад  Вперед