Eugene Berdnikov <b...@protva.ru> wrote: > On Thu, Sep 28, 2023 at 05:32:35PM +0700, Max Nikulin wrote: > > On 26/09/2023 21:43, Eugene Berdnikov wrote: > > > On Tue, Sep 12, 2023 at 10:55:46PM +0300, Eugene Berdnikov wrote: > > > Но не тут-то было: сегодня 4 раза подряд rsyslogd не запустился... :) > > > На том же хосте, где 2 недели назад проверялся orphan-sysvinit-scripts. > > > > А в консоль он что-нибудь пишет, когда не может запуститься?
> Нет. > > Останавливается перед этим нормально? > Ммм... не знаю. Он при остановке что-то странное делает. > У него при работе открыт некий сокет на fd=1, > lr-x------ 1 root root 64 сен 28 16:30 0 -> /dev/urandom > lrwx------ 1 root root 64 сен 28 16:30 1 -> 'socket:[34753352]' > ... > и он перед экзитом выполняет такой код: > [pid 848] --- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1428154, > si_uid=0} --- > [pid 848] gettid() = 848 > [pid 848] getpid() = 848 > ... > [pid 848] kill(848, SIGTTOU) = 0 > [pid 848] --- SIGTTOU {si_signo=SIGTTOU, si_code=SI_USER, si_pid=848, > si_uid=0} --- > [pid 848] sigreturn({mask=[]}) = 0 > [pid 848] send(1, "<46>Sep 28 16:37:26 rsyslogd: [origin > software=\"rsyslogd\" swVersion=\"8.2308.0\" x-pid=\"848\" > x-info=\"https://www.rsyslog.com\"] exiting on signal 15.", 146, > MSG_NOSIGNAL) = -1 ECONNREFUSED (В соединении отказано) > [pid 848] close(1) = 0 > [pid 848] socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 1 > [pid 848] connect(1, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 > ENOENT (Нет такого файла или каталога) > [pid 848] close(1) = 0 Это стандартный кусок записи внутреннего сообщения в лог. Ничего интересного тут нет. Самое интересное - почему сдох слушатель, но этого в трейсе у тебя нет. > Возможно, этот сокет с fd=1 используется для взаимодействия со своими же Это явно результат вызова openlog() где-то внутри syslog(). > тредами, но поскольку на send() возвращается ECONNREFUSED, то скорее всего > тред-писатель уже не слушает, и потому в логе сообщения об экзите нет. > Зачем далее открывается ещё один сокет, и делается попытка соединиться > с /dev/log (это самим-то rsyslogd, да ещё по получении SIGTERM!), > я не понимаю. И, честно говоря, совершенно не горю желанием разбираться, > поскольку, повторюсь, страшно подумать, что там внутри... > Хотя может я просто чайник и не способен понять логику из трейса. > Например, зачем самому себе посылать SIGTTOU, причём внутри обработчика > сигнала (поскольку далее идёт sigreturn()). Зачем - это можно понять из коментария пустого обработчика сигнала: --- cut --- static void hdlr_sigttin_ou(void) { /* this is just a dummy to care for our sigttin input * module cancel interface and sigttou internal message * notificaton/mainloop wakeup mechanism. The important * point is that it actually does *NOTHING*. */ } --- cut ---