Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Alma mater

[XL]WOLF <admin@ns0.ru>

Спецвыпуск: Хакер, номер #051, стр. 051-008-4


# kill –9 69560

Я выбрал –9, потому что мне нужно обязательно завершить этот процесс, а сигнал –KILL не может быть отловлен и проигнорирован. На самом деле сигнал –HUP должен интересовать тебя больше, чем даже –9. Допустим, у нас запущен прокси squid на сервере и что-то изменено в конфигурационном файле, но работающая программа об этом ничего не знает. Не будет же она постоянно перечитывать конфигурационный файл отслеживая изменения. Можно, конечно, убить процесс и запустить squid снова, но это ниже твоего достоинства. Лучше подать процессу сигнал о том, что конфигурационный файл изменился и что его нужно прочитать. Делается это опять же просто:

# kill –HUP pid

где pid – это идентификатор процесса, которому нужно подать сигнал. Конечно, идентификаторы - это хорошо, но не каждый человек способен сходу запомнить пятизначное число. Нужно посмотреть в таблицу процессов, найти нужный pid, скопировать или вписать его снова на консоль. Это долго, да и не всегда удобно. Тебя ждут более важные дела, а для свободы твоей гениальности придумана команда killall. Все то, что было сотворено с ping, можно было сделать проще:

# killall –9 ping

И даже не нужно было бы смотреть список процессов. Эта команда убьет все процессы ping, что не всегда желательно. Если вдруг на другой консоли сидит какой-то человек, например, мой знакомый по имени r1c, и кого-то пингует, то убийству своего собственного процесса он не порадуется. Это мокрое дело произойдет тогда, когда мы с ним будем работать от имени одного пользователя или когда я буду работать под root’ом. В том случае, если я не root и пытаюсь послать сигнал не моему процессу, мне просто будет отказано в доступе. А что сделать, чтобы не разозлить r1c’а? У команды killall есть два замечательных параметра –u и –t. Параметр –u ограничивает процессы, которым будет послан сигнал, по пользователю. То есть нужно написать:

# killall –u root –9 ping

И теперь будут убиты все процессы ping, которые запущены от имени root’а. Второй параметр может понадобиться, если захочешь поиздеваться над каким-либо пользователем. –t ограничивает процессы по терминалу. Что это значит и как это нам поможет? Используя команду

# w

можно добраться до списка пользователей, которые работают в системе на данный момент. Итак, мы видим колонку TTY. Это и есть имя терминала, за которым работает пользователь (терминал может быть как виртуальный, так и физический; в этом случае неважно). Подмечаем, что товарищ r1c работает за терминалом p2. Выполнив команду

# killall –t p2 –9 bash

сбрасываем r1c’а с консоли (при условии, что default-шелл у r1c’а именно bash).

Назад на стр. 051-008-3  Содержание  Вперед на стр. 051-008-5