Как изменить путь журнала демона syslog во время выполнения? Моя цель - повернуть файл журнала каждый файл или дату, но у меня нет logrotate в QNX/POSIX.
Я просто делаю редактирование и надеюсь, что syslogd проверяет файл .conf каждый раз, или есть ли какое-либо другое обходное решение? Спасибо.
Уточнение: это должно быть сделано на C или С++, а не в script и в командной строке консоли, для проблем с переносимостью.
Ответ основан на некотором решении, найденном в Интернете, а также на основе ответа @bills, измененном в соответствии с окружением QNX.
Выполните системный вызов slay syslogd
и снова отредактируйте syslog.conf
и системный вызов syslogd
.
QNX не предоставляет logrotate, иначе отличный от приведенного выше ответа, установка стороннего протокола - это еще один способ обхода, хотя и не соответствует моей цели.
update. После некоторого копания QNX предоставляет альтернативу под названием slogger
в операционной системе Neutrino. Я буду голосовать за это как ответ, поскольку он обслуживает систему QNX.
Найдите pid syslogd. Скажем 123. Затем, после того, как вы закончили редактирование, в командной строке введите один из них:
kill -HUP 123
kill -1 123
kill(2)
или использовать system(3)
. Нет способа отправить этот сигнал в syslogd или перезапустить его.
Мне кажется, вам лучше всего поправить newsyslog на вашу платформу.