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