Я хочу использовать 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.
Команда 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