Что означает SIGUSR1 в «killall -SIGUSR1 tint2»

Я хочу использовать tint2 в качестве панели в сеансе Openbox.

Файл конфигурации tint2 - ~ / .config / tint2 / tint2rc. Инструкции по настройке tint2 имеют следующее:

Когда вы изменяете файл конфигурации, командная строка 'killall -SIGUSR1 tint2' заставит tint2 перезагрузить его.

Что делает

killall -SIGUSR1

?

Другими словами, как выполнение killall -SIGUSR1 tint2 приводит к перезагрузке tint2rc ]?


Редактировать: кажется, что ~ / .conkyrc можно перезагрузить таким же образом. Из man conky:

Простой способ заставить Conky перезагрузить ваш ~ / .conkyrc: "killall -SIGUSR1 conky". Избавляет вас от необходимости убивать, а затем перезапускать. Теперь вы можете сделать то же самое с SIGHUP.

3
задан 18 January 2014 в 15:45

1 ответ

Команда kill действительно посылает сигнал процессу ... он немного неверно назван.

Команда

killall -SIGxxx name

отправит «сигнал» xxx процессу с именем «имя». Процесс в Unix может получать и обрабатывать набор сигналов для реагирования на внешние события. По умолчанию kill отправляет сигнал SIGTERM, который имеет (предопределенный) эффект изящного уничтожения процесса. (сигнал SIGKILL убьет процесс "жестоко", поэтому иногда вам нужно использовать команду killall -SIGKILL ...).

Некоторые процессы имеют жестко закодированное значение (например: HUP - разъединение и т. Д.) И иногда отправляются ядром. USR1 и USR2 являются определяемыми пользователем сигналами.

Вы даже можете легко сделать это в сценариях: если вы вставите в сценарий строку

trap "echo TRAPPED" USR1

, сценарий выведет «TRAPPED», когда вы отправите ему сигнал USR1 с помощью команды kill.

Таким образом, ответ на последний вопрос:

Очевидно, что программа «tint2» имеет код, который после получения сигнала USR1 перезагрузит свой файл конфигурации.

См., Например, http://unixhelp.ed.ac.uk/CGI/man-cgi?signal+7

0
ответ дан 18 January 2014 в 15:45

Другие вопросы по тегам:

Похожие вопросы: