Что означает 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.

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

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