• devuan

    From sergio@21:1/5 to All on Thu Sep 7 01:10:01 2023
    В букворме сломана поддержка rsyslog в sysv:

    1. удалён /etc/init.d/rsyslog
    2. /usr/lib/rsyslog/rsyslog-rotate обрезан else про invoke-rc.d:

    if [ -d /run/systemd/system ]; then
    systemctl kill -s HUP rsyslog.service
    else
    invoke-rc.d rsyslog rotate > /dev/null
    fi

    Воспринимается это как целенаправленное вредительство и унижение
    пользователей sysV. Можно, конечно, и то и то через /etc исправить (на
    rsyslog-rotate ссылается /etc/logrotate.d/rsyslog), то есть update оно
    переживать будет. А можно и по сторонам посмотреть. Есть у кого чего
    сказать про devuan?


    --
    sergio.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alexey Shaposhnikov@21:1/5 to sergio on Thu Sep 7 11:10:02 2023
    On Thu, 7 Sep 2023 01:38:27 +0300
    sergio <sergio@outerface.net> wrote:

    Есть у кого чего сказать про devuan?

    Ну, у меня он на домашней машине стоит (там микс из девуановских репозиториев
    и deb-multimedia). Работает нормально, но, апстрим может погдадить. Так,
    например, недавно libgudev поломало совместимость с eudev (подробности:
    https://github.com/eudev-project/eudev/issues/249).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to sergio on Thu Sep 7 10:20:01 2023
    On Thu, Sep 07, 2023 at 01:38:27AM +0300, sergio wrote:
    В букворме сломана поддержка rsyslog в sysv:

    1. удалён /etc/init.d/rsyslog
    2. /usr/lib/rsyslog/rsyslog-rotate обрезан else про invoke-rc.d:

    if [ -d /run/systemd/system ]; then
    systemctl kill -s HUP rsyslog.service
    else
    invoke-rc.d rsyslog rotate > /dev/null
    fi

    Воспринимается это как целенаправленное вредительство и унижение
    пользователей sysV. Можно, конечно, и то и то через /etc исправить (на
    rsyslog-rotate ссылается /etc/logrotate.d/rsyslog), то есть update оно
    переживать будет. А можно и по сторонам посмотреть. Есть у кого чего сказать
    про devuan?

    Не знаю про devuan, скажу про debian, ибо он эхотаг (привет фидошникам).

    Rsyslog переломан в нескольких местах. При рестарте он запускается 50/50
    (как те фашистские гранаты из культового боевика "Брат-2"). Почему так --
    не знаю, и копать не хочется: судя по тому, что авторы rsyslog'а изобрели
    в плане синтаксиса конфигов, в головах у них венигрет... Страшно подумать,
    какой ужас там в коде, потому и лезть туда не хочется. Systemd его стартует
    лишь потому, что расчитан на запуск даже таких калек, которые сами
    с первой попытки подняться не могут.

    Что там в голове у мантейнеров -- неведомо. Maybe это юные наруралисты,
    которые SysV-init не видели и не догадываются, что его тоже нужно включить
    в пакет... А может они в курсе, какое дерьмо мантейнят и просто забили
    на SysV-init, поскольку заставить это нормально работать не удаётся.
    Во всяком случае, мне не удалось. Пришлось делать крон-скрипт, который
    проверяет наличие процесса rsyslogd и при отсутствии пытается запустить.
    Так оно хоть как-то живёт на старых системах с SysV-init.

    Единственная известная мне альтернатива rsyslog-у, умеющая делить логи
    по шаблонам/регуляркам, это syslog-ng. К сожалению, сейчас его автора,
    что называется, понесло... А раньше syslog-ng иногда подвисал из-за
    какой-то баги. При этом он переставал принимать пакеты, и подвисала
    практически вся система, ибо в юниксах код syslog(3) традиционно
    блокирующийся, и в линуксе GNU libc, там так же. Я даже собрал все
    материалы для багрепорта, но времени оформить его не хватило, пришлось
    просто оставить syslog-ng. Альтернатива в виде rsyslog'а хоть с костылями
    и через пень-колоду, но всё-таки работает и не убивает всю систему.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to sergio on Thu Sep 7 13:30:01 2023
    sergio <sergio@outerface.net> wrote:
    В букворме сломана поддержка rsyslog в sysv:

    1. удалён /etc/init.d/rsyslog
    2. /usr/lib/rsyslog/rsyslog-rotate обрезан else про invoke-rc.d:

    if [ -d /run/systemd/system ]; then
    systemctl kill -s HUP rsyslog.service
    else
    invoke-rc.d rsyslog rotate > /dev/null
    fi

    Воспринимается это как целенаправленное вредительство и унижение
    пользователей sysV. Можно, конечно, и то и то через /etc исправить (на
    Да, у них политика партии - systemd. И эта политика получается из-за gnome и
    лени маинтайнеров поддерживать всё остальное.
    Я себе держу приватный репозиорий, в котором собираю необходимые пакеты сам,
    с нужными скриптами/патчами/etc.

    rsyslog-rotate ссылается /etc/logrotate.d/rsyslog), то есть update оно
    переживать будет.
    Зачем всё так сложно ? Поставь orphan-sysvinit-scripts - оно само тебе
    файлики как надо поменяет.

    А можно и по сторонам посмотреть. Есть у кого чего сказать про devuan?
    Эти тоже со своими тараканами. Почему нельзя было взять udev из дебиана и
    его использовать? Нет, надо тащить eudev в который запиливать фичи из udev.
    Классическое "К соседу в сарай через Никарагуа".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Tim Sattarov@21:1/5 to Eugene Berdnikov on Thu Sep 7 22:40:01 2023
    This is a multi-part message in MIME format.
    On 2023-09-07 04:09, Eugene Berdnikov wrote:
    Rsyslog переломан в нескольких местах.
    Если не ошибаюсь, то в последнем (12) Дебьяне rsyslog по умолчанию не ставится и стоит только
    системный журнал из systemd...

    https://wiki.debian.org/Rsyslog#Deprecation_in_Bookworm
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <br>
    <br>
    <div class="moz-cite-prefix">On 2023-09-07 04:09, Eugene Berdnikov
    wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:ZPmFI5TEHSuGx3m8@cub.protva.ru"><span
    style="white-space: pre-wrap">
    </span>
    <pre class="moz-quote-pre" wrap=""> Rsyslog переломан в нескольких местах. </pre>
    </blockquote>
    Если не ошибаюсь, то в последнем (12) Дебьяне rsyslog по умолчанию
    не ставится и стоит только системный журнал из systemd...<br>
    <br>
    <a class="moz-txt-link-freetext" href="https://wiki.debian.org/Rsyslog#Deprecation_in_Bookworm">https://wiki.debian.org/Rsyslog#Deprecation_in_Bookworm</a><br>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alexander Gerasiov@21:1/5 to Andrey Jr. Melnikov on Fri Sep 8 15:20:01 2023
    On Thu, 7 Sep 2023 14:11:06 +0300
    "Andrey Jr. Melnikov" <temnota.am@gmail.com> wrote:

    А можно и по сторонам посмотреть. Есть у кого чего сказать про
    devuan?
    Эти тоже со своими тараканами. Почему нельзя было взять udev из
    дебиана и его использовать? Нет, надо тащить eudev в который
    запиливать фичи из udev. Классическое "К соседу в сарай через
    Никарагуа".
    Так нынешний udev - это кусок systemd. Его, конечно, можно без самого
    systemd использовать, но ненависть к systemd - это скорее религиозное,
    так что udev из него брать тоже нельзя ни в коем случае.


    --
    Best regards,
    Alexander Gerasiov

    Contacts:
    e-mail: a@gerasiov.net WWW: https://gerasiov.net TG/Skype: gerasiov
    PGP fingerprint: 04B5 9D90 DF7C C2AB CD49 BAEA CA87 E9E8 2AAC 33F1

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Tim Sattarov on Sat Sep 9 04:50:01 2023
    On 08/09/2023 03:31, Tim Sattarov wrote:

    On 2023-09-07 04:09, Eugene Berdnikov wrote:
    Rsyslog переломан в нескольких местах.
    Если не ошибаюсь, то в последнем (12) Дебьяне rsyslog по умолчанию не
    ставится и стоит только системный журнал из systemd...

    https://wiki.debian.org/Rsyslog#Deprecation_in_Bookworm

    Тогда уж https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#changes-to-system-logging

    Я за развитием сюжета не следил, но есть ощущение, что просто люди
    жаловались, что место на диске тратится на второй экземпляр логов,
    которые можно достать из journald. Я не буду спорить, что в некоторых
    случаях rsyslog может не работать. При этом я удивлюсь, если услышу
    убедительные аргументы против того, что он нормально работал почти у всех.

    А по поводу rsyslog-rotate, можно проверить, что патч
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031399#24 накладывается и корректно работает, а потом вежливо, без негатива в
    сторону systemd/journald, о нем напомнить, подтвердив, что он решает
    проблему.

    В unstable вроде версия обновилась несколько раз, так что пакет не
    выглядит заброшенным. Сомневаюсь правда, что исправление попадет в
    bookworm, если не случится какой-нибудь страшный CVE. Может в devuan
    пересоберут пакет.

    P.S. Можно еще в скрипт добавить дополнительный else с вызовом logger,
    чтобы напомнить администратору, что ротацию логов надо чинить.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Max Nikulin on Sat Sep 9 23:10:02 2023
    On Sat, Sep 09, 2023 at 09:41:36AM +0700, Max Nikulin wrote:
    А по поводу rsyslog-rotate, можно проверить, что патч
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031399#24 накладывается и
    корректно работает, а потом вежливо, [...]

    Этот патч требует /etc/init.d/rsyslog, что, собственно, в комментарии
    к нему и написано. А скрипт этот в дистрибутив не положили.

    Но там не написано, что выполнить задачу скрипта /etc/init.d/rsyslog
    не очень просто, потому что rsyslogd при рестарте запускается через раз.
    Мои попытки сделать в скрипте цикл и на каждой итерации проверять,
    запустился rsyslogd или нет, не привели к успеху даже в варианте
    "5 итераций и ожидание 3 секунды после перезапуска" -- всё равно бывали
    случаи, когда процесс не запускался. Автоподъём по крону эту проблему
    решает, но нужно понимать, что иногда система живёт без сислога.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Eugene Berdnikov on Sun Sep 10 18:10:02 2023
    On 10/09/2023 03:58, Eugene Berdnikov wrote:
    On Sat, Sep 09, 2023 at 09:41:36AM +0700, Max Nikulin wrote:
    А по поводу rsyslog-rotate, можно проверить, что патч
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031399#24 накладывается и
    корректно работает, а потом вежливо, [...]

    Этот патч требует /etc/init.d/rsyslog, что, собственно, в комментарии
    к нему и написано. А скрипт этот в дистрибутив не положили.

    Вот для тех, кто забудет про init скрипт, я и предлагал добавить logger.

    Andrey Jr. Melnikov уже написал, что скрипт положили, но в пакет
    orphan-sysvinit-scripts. Правда туда положили и /usr/lib/rsyslog/rsyslog-rotate.

    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031854 orphan-sysvinit-scripts: should cope with defective rsyslog-rotate

    Глядя со стороны, кажется, что все должно работать.

    Но там не написано, что выполнить задачу скрипта /etc/init.d/rsyslog
    не очень просто, потому что rsyslogd при рестарте запускается через раз.
    Мои попытки сделать в скрипте цикл и на каждой итерации проверять,
    запустился rsyslogd или нет, не привели к успеху даже в варианте
    "5 итераций и ожидание 3 секунды после перезапуска" -- всё равно бывали
    случаи, когда процесс не запускался. Автоподъём по крону эту проблему
    решает, но нужно понимать, что иногда система живёт без сислога.

    А оригинальный init скрипт с этой задачей не справлялся что-ли? Какие-то
    сложности с сетевыми сокетами или что-то другое?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Lu@21:1/5 to All on Tue Sep 12 12:50:01 2023
    07.09.2023 15:09, Eugene Berdnikov пишет:

    Единственная известная мне альтернатива rsyslog-у, умеющая делить логи
    по шаблонам/регуляркам, это syslog-ng. К сожалению, сейчас его автора,
    что называется, понесло... А раньше syslog-ng иногда подвисал из-за
    какой-то баги. При этом он переставал принимать пакеты, и подвисала
    практически вся система, ибо в юниксах код syslog(3) традиционно
    блокирующийся, и в линуксе GNU libc, там так же. Я даже собрал все
    материалы для багрепорта, но времени оформить его не хватило, пришлось
    просто оставить syslog-ng. Альтернатива в виде rsyslog'а хоть с костылями
    и через пень-колоду, но всё-таки работает и не убивает всю систему.
    Можно поподробнее про syslog-ng ? используем syslog-ng на большом
    количестве серверов со стретча до булзая, в разных позах - никаких
    проблем не замечали

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Max Nikulin on Tue Sep 12 22:00:01 2023
    On Sun, Sep 10, 2023 at 11:02:39PM +0700, Max Nikulin wrote:
    Andrey Jr. Melnikov уже написал, что скрипт положили, но в пакет
    orphan-sysvinit-scripts. Правда туда положили и /usr/lib/rsyslog/rsyslog-rotate.
    [...]
    Но там не написано, что выполнить задачу скрипта /etc/init.d/rsyslog
    не очень просто, потому что rsyslogd при рестарте запускается через раз.
    Мои попытки сделать в скрипте цикл и на каждой итерации проверять,
    запустился rsyslogd или нет, не привели к успеху даже в варианте
    "5 итераций и ожидание 3 секунды после перезапуска" -- всё равно бывали
    случаи, когда процесс не запускался. Автоподъём по крону эту проблему
    решает, но нужно понимать, что иногда система живёт без сислога.

    А оригинальный init скрипт с этой задачей не справлялся что-ли? Какие-то
    сложности с сетевыми сокетами или что-то другое?

    Вытащил скрипт из свежего orphan-sysvinit-scripts, о котором я не знал.
    Там скрипт совсем свеженький, датирован 3 сентября 2023. При сравнении
    с моим собственным скриптом (последняя правка от 30-янв-2022) нашлось
    лишь одно отличие: у меня start-stop-daemon вызывается с опцией -oknodo,
    в остальном скрипты по сути совпадают. И выяснилось, что сейчас оба
    успешно перезапускают rsyslogd... :) В чём была проблема -- мне тогда
    докопаться не удалось (уже не помню, почему, кажется, под strace эта
    зараза всегда успешно работала, а без strace процесс исчезал, не оставляя
    ни корки, ни других следов). Возможно, багу пофиксили, поскольку ryslog
    с тех пор обновлялся, в том числе совсем недавно:

    2023-08-19 21:42:26 upgrade rsyslog:i386 8.2306.0-2 8.2308.0-1
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Lu on Tue Sep 12 21:40:01 2023
    On Tue, Sep 12, 2023 at 05:40:36PM +0700, Andrey Lu wrote:
    07.09.2023 15:09, Eugene Berdnikov пишет:
    [...]
    что называется, понесло... А раньше syslog-ng иногда подвисал из-за
    какой-то баги. При этом он переставал принимать пакеты, и подвисала
    практически вся система, ибо в юниксах код syslog(3) традиционно
    блокирующийся, и в линуксе GNU libc, там так же. Я даже собрал все
    материалы для багрепорта, но времени оформить его не хватило, пришлось
    [...]
    Можно поподробнее про syslog-ng ? используем syslog-ng на большом количестве
    серверов со стретча до булзая, в разных позах - никаких проблем не замечали

    Нашёл файлики от июля 2019, созданные когда я готовил багрепорт.
    В них видно, что syslog-ng стопорится на операции записи

    send(32, "<39>Jul 20 07:49:29 syslog-ng: DIGEST-MD5 common mech free", 58, MSG_NOSIGNAL

    a lsof в этот замечательный момент показывает

    COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
    syslog-ng 18274 root 32u unix 0x00000000c94137a7 0t0 5922798 type=DGRAM

    Т.е. syslog-ng пытается писать в сокет, клонированный accept()ом
    от /dev/log. Но с обратной стороны никто не собирается читать, там
    сидит чукча-писатель с syslog(3). А поскольку send() с MSG_NOSIGNAL,
    и, ясный пень, без таймера, то наступает капец. Ни по ssh зайти
    на эту машину, ни с консоли, поскольку и sshd, и getty->login вызывают
    синхронный syslog(3), на котором точно так же виснут.

    Бага проявлялась редко, но на физических хостах она отличалась особой
    неприятностью. И неуловимостью. А в контейнере поймалась на ура.
    Возможно, это уже починили, всё-таки 4 года прошло.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Thu Sep 14 12:10:01 2023
    On Thu, Sep 14, 2023 at 12:21:03PM +0300, Andrey Jr. Melnikov wrote:
    А у тебя случаем контейнеров на машинке не крутится? А то смотри,
    start-stop-daemon у нас тупенький, он про отдельные неймспесы ничего не
    знает. Поэтому, когда у тебя запущенно несколько экземпляров чего либо в
    различных контейнерах - start-stop-daemon на host-машине ведет себя весма
    оригинально - то сигнал не в тот процесс пришлёт, то узрит живущий демон в
    контенйнере и откажется запускать его-же на хосте. Из-за этого, приходтся
    весь пакадж с dpkg пересобирать. Хотя, надо наверное сделать отдельный и
    через dpkg-divert подсовывать нужный start-stop-daemon.

    У меня везде, где есть контейнеры, стоит система инициализации systemd.
    Потому что lxc, например, под SysV-init не жилец (да, я знаю, что можно
    запускать контейнеры lxc под sysv, но это будет не работа, а бесконечный
    бег по граблям).

    Но я писал про сислоги в контексте физических машин и контейнеров
    без вложенности, где start-stop-daemon ошибиться не может.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Thu Sep 14 11:40:01 2023
    Eugene Berdnikov <bd4@protva.ru> wrote:
    On Sun, Sep 10, 2023 at 11:02:39PM +0700, Max Nikulin wrote:
    Andrey Jr. Melnikov уже написал, что скрипт положили, но в пакет
    orphan-sysvinit-scripts. Правда туда положили и /usr/lib/rsyslog/rsyslog-rotate.

    [...]

    Вытащил скрипт из свежего orphan-sysvinit-scripts, о котором я не знал.
    Там скрипт совсем свеженький, датирован 3 сентября 2023. При сравнении
    с моим собственным скриптом (последняя правка от 30-янв-2022) нашлось
    лишь одно отличие: у меня start-stop-daemon вызывается с опцией -oknodo,
    в остальном скрипты по сути совпадают. И выяснилось, что сейчас оба
    успешно перезапускают rsyslogd... :) В чём была проблема -- мне тогда
    докопаться не удалось (уже не помню, почему, кажется, под strace эта
    зараза всегда успешно работала, а без strace процесс исчезал, не оставляя
    ни корки, ни других следов). Возможно, багу пофиксили, поскольку ryslog
    с тех пор обновлялся, в том числе совсем недавно:

    А у тебя случаем контейнеров на машинке не крутится? А то смотри,
    start-stop-daemon у нас тупенький, он про отдельные неймспесы ничего не
    знает. Поэтому, когда у тебя запущенно несколько экземпляров чего либо в
    различных контейнерах - start-stop-daemon на host-машине ведет себя весма
    оригинально - то сигнал не в тот процесс пришлёт, то узрит живущий демон в
    контенйнере и откажется запускать его-же на хосте. Из-за этого, приходтся
    весь пакадж с dpkg пересобирать. Хотя, надо наверное сделать отдельный и
    через dpkg-divert подсовывать нужный start-stop-daemon.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Thu Sep 14 13:40:01 2023
    Eugene Berdnikov <bd4@protva.ru> wrote:
    On Thu, Sep 14, 2023 at 12:21:03PM +0300, Andrey Jr. Melnikov wrote:
    А у тебя случаем контейнеров на машинке не крутится? А то смотри,
    start-stop-daemon у нас тупенький, он про отдельные неймспесы ничего не
    знает. Поэтому, когда у тебя запущенно несколько экземпляров чего либо в
    различных контейнерах - start-stop-daemon на host-машине ведет себя весма
    оригинально - то сигнал не в тот процесс пришлёт, то узрит живущий демон в
    контенйнере и откажется запускать его-же на хосте. Из-за этого, приходтся
    весь пакадж с dpkg пересобирать. Хотя, надо наверное сделать отдельный и
    через dpkg-divert подсовывать нужный start-stop-daemon.

    У меня везде, где есть контейнеры, стоит система инициализации systemd.
    Потому что lxc, например, под SysV-init не жилец (да, я знаю, что можно
    запускать контейнеры lxc под sysv, но это будет не работа, а бесконечный
    бег по граблям).
    У меня везде стоит SysV-init где контейнеры. И ничего - граблей не наблюдаю.
    И даже контейненры с systemd внутри - тоже работают, хотя раньше это изделие
    не могло там стартануть нормально.

    Но я писал про сислоги в контексте физических машин и контейнеров
    без вложенности, где start-stop-daemon ошибиться не может.
    Вопрос не во вложенности, а имеено в том, что на физическом хосте
    start-stop-daemon путается в запущенном. Следи за руками:

    ~# ps ax | grep cron
    1722 ? Ss 0:00 /usr/sbin/cron -f
    23546 ? Ss 0:00 /usr/sbin/cron
    23772 pts/0 S+ 0:00 grep cron
    ~# start-stop-daemon --status --exec /usr/sbin/cron ; echo $?

    0
    ~# /etc/init.d/cron stop
    Stopping cron (via systemctl): cron.service.
    ~# ps ax | grep cron
    23546 ? Ss 0:00 /usr/sbin/cron
    23798 pts/0 S+ 0:00 grep cron
    ~# start-stop-daemon --status --exec /usr/sbin/cron ; echo $?

    0

    Видишь, на хосте cron не работает, в контейнере - работет, но по мнению
    start-stop-daemon - он работает на хосте.

    Остановим контейнер:

    ~# lxc-stop test
    ~# ps ax | grep cron
    24127 pts/0 S+ 0:00 grep cron
    ~# start-stop-daemon --status --exec /usr/sbin/cron ; echo $?
    3

    О. Теперь мы заметили, что "program is not running". Вот такая чудная
    запускалка демонов.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Thu Sep 14 16:00:01 2023
    On Thu, Sep 14, 2023 at 02:26:07PM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    , , systemd.
    lxc, , SysV-init (, ,
    lxc sysv, ,
    ).
    SysV-init . - . systemd - , .

    1. , , , 2.
    . lxc-,
    wiki " SysV",
    , systemd
    100 ... systemd shutdown/reboot
    , , ݣ - ,
    SysV .

    , , ,
    ӣ ... , i686
    mplayer chrome. ,
    i686, , SSSE3, .
    , , ,
    "" , -.
    , Σ 32-
    ? 64 , ,
    , 32- /.

    , . , .

    , , start-stop-daemon . :

    . , start-stop-daemon ,
    () .
    . systemd
    SysV ף.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From dimas@21:1/5 to All on Thu Sep 14 20:50:01 2023
    pid-файл? не, не слышали
    grep "pid" /etc/init.d/cron
    PIDFILE=/var/run/crond.pid
    start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
    killproc -p $PIDFILE $DAEMON
    [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? почему оно должно путаться - я вообще не понимаю

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Fri Sep 15 09:30:01 2023
    Eugene Berdnikov <bd4@protva.ru> wrote:
    On Thu, Sep 14, 2023 at 02:26:07PM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    У меня везде, где есть контейнеры, стоит система инициализации systemd.
    Потому что lxc, например, под SysV-init не жилец (да, я знаю, что можно
    запускать контейнеры lxc под sysv, но это будет не работа, а бесконечный
    бег по граблям).
    У меня везде стоит SysV-init где контейнеры. И ничего - граблей не наблюдаю.
    И даже контейненры с systemd внутри - тоже работают, хотя раньше это изделие
    не могло там стартануть нормально.

    Ну так 1. я про то, что было раньше, несколько лет назад, 2. контейнеры
    они разные бывают. Несколько лет назад я пытался завести lxc-шные,
    начитался разных wiki на тему "как заставить это работать под SysV",
    и в итоге сделал для себя вывод, что проще поставить на хост systemd
    чем 100 раз отжиматься... Под systemd оно сразу и shutdown/reboot нормально
    отрабатывало, и вложенные контейнеры запускало, и ещё чего-то там делало,
    что под SysV лечилось лишь напильником.
    Хахаха... Ты нашёл замшелую граблю обильно присыпанную пылью веков. Всё дело
    в том, что lxc использует SIGPWR для останова контенйнеров, а в inittab'e от
    SysV-init прописано обработчик "pf::powerwait:/etc/init.d/powerfail start"
    который ещё 10 лет назад был в пакетах powstatd/genpower и которые выкинули
    из unstable где-то в районе squeeze/wheezy. А про скриптик - так и забыли,
    сейчас не модно держать UPS подключенный к машине.

    Тенденция такова, что как только отстал от мейстрима, так проблемы растут,
    отнимая всё больше времени и сил... Вон, формально для i686 до сих пор
    собирают mplayer и chrome. Однако на тех процах, которые были во времена
    Эмм, за последние 15 лет не выпускалось процессоров без поддержки x64.
    Системы 10и летней давности - ужасно энерго неэффективны, их проще менять
    целиком на что-то более новоее. Вон китайский плеер за 2 тысячи рублей -
    вполне помещается за телевизором, крутит HD видео без заиканий и потери
    кадров и при этом - не шумит и не греет воздух.

    мейнстрима i686, как правило, не было SSSE3, которые эти изделия хотят.
    И ведь можно было бы обойтись, просто работать медленнее, но нет, кодерам
    неинтересна поддержка "убогих" процов, им проще тупо вернуть статус-код.
    SSE3, как впрочем и всякие AVX512 - сильно перероценён и больше представляет
    из себя маркетинговый буллщит в стиле "а у нас страшных буковок больше".

    Ну а если у меня современный проц, зачем мне гонять на нём 32-битную
    базовую систему? Я 64 заведу, а всякие ископаемые конфигурации, которые
    слишком дорого переделывать, загоню в 32-битные виртуалки/контейнеры.
    Закапывать надо такие конфигурации, как стюардессу.

    И так оно везде, к сожалению. В том числе в виртуализации, всех видов.

    Вопрос не во вложенности, а имеено в том, что на физическом хосте
    start-stop-daemon путается в запущенном. Следи за руками:

    Да это понятно. Я про то, что в контейнере start-stop-daemon не путается,
    если там других (вложенных) контейнеров нет. Потому как в контейнере
    ему лишь свои и дочерние процессы видны. Поэтому под systemd контейнер
    с инициализаций SysV нормально живёт.
    Контенер с SysV живёт где угодно, ему тупо не надо, как systemd -
    смонтированных cgroupv2 псевдо-fs для работы. А вот systemd - вынь да полож.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to dimas on Fri Sep 15 09:40:01 2023
    dimas <dimas000@ya.ru> wrote:
    pid-файл? не, не слышали
    Нет конечно, не слышали, откуда нам.

    grep "pid" /etc/init.d/cron
    PIDFILE=/var/run/crond.pid
    start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
    killproc -p $PIDFILE $DAEMON
    [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? почему оно должно путаться - я вообще не понимаю

    Во первых - это был пример. Во вторых - не каждый демон первым делом создаёт
    pid файл, он может задуматься на ресолвинге имён или ещё каких своих
    потребностях. И в обратную сторону так-же - демон останавливается, pid уже
    стёр, а сам ещё не выгрузился. Поэтому - демон afrnbxtcrb запущен, а
    pid-файла - нет.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Fri Sep 15 10:10:01 2023
    On Fri, Sep 15, 2023 at 10:11:34AM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    и в итоге сделал для себя вывод, что проще поставить на хост systemd
    чем 100 раз отжиматься... Под systemd оно сразу и shutdown/reboot нормально
    отрабатывало, и вложенные контейнеры запускало, и ещё чего-то там делало,
    что под SysV лечилось лишь напильником.
    Хахаха... Ты нашёл замшелую граблю обильно присыпанную пылью веков. Всё дело
    в том, что lxc использует SIGPWR для останова контенйнеров, а в inittab'e от
    SysV-init прописано обработчик "pf::powerwait:/etc/init.d/powerfail start"

    Если такая грабля существовала, это не то, с чем сталкивался я...
    Насчёт SIGPWR не знаю, скорее всего он используется, но конечный результат
    зависит и от процесса, управляющего контейнером, и от поведения init'а
    внутри контейнера. Вот у меня контейнеры с дебианами примерно от 2008 года
    (с апдейтами, да), с такими строчками в inittab'e:

    # What to do when the power fails/returns.
    pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop

    причём никаких /etc/init.d/power* нет, а системы нормально гасятся и
    поднимаются. Под systemd. Когда я игрался с подобными контейнерами
    под SysV, там было примерно такое: по lxc-stop контейнер шустро
    сворачивается, а потом lxc-stop висит 2-3 минуты, ожидая какого-то
    ответа из сокета, и выдаёт невразумительное сообщение об ошибке.
    При этом в контейнере ничего не ломается.

    И много подобных неудобств и граблей было, всех уже не вспомнить...

    Если сегодня под SysV инфраструктура lxc нормально живёт, это замечательно,
    но мне надо было вчера, и для этих задач я для себя выбрал systemd.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Andrey Jr. Melnikov on Fri Sep 15 16:30:01 2023
    On 14/09/2023 18:26, Andrey Jr. Melnikov wrote:
    Вопрос не во вложенности, а имеено в том, что на физическом хосте
    start-stop-daemon путается в запущенном. Следи за руками:

    ~# ps ax | grep cron
    1722 ? Ss 0:00 /usr/sbin/cron -f
    23546 ? Ss 0:00 /usr/sbin/cron
    23772 pts/0 S+ 0:00 grep cron

    А научить его действительно проблема? Наугад попробовал

    ps -eo pid,pidns,user,cmd f

    контейнер выделяется по pidns. У меня, конечно systemd, но pidns же lxc
    вроде создает, так что это влиять не должно.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Fri Sep 15 16:20:01 2023
    Eugene Berdnikov <bd4@protva.ru> wrote:
    On Fri, Sep 15, 2023 at 10:11:34AM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    и в итоге сделал для себя вывод, что проще поставить на хост systemd
    чем 100 раз отжиматься... Под systemd оно сразу и shutdown/reboot нормально
    отрабатывало, и вложенные контейнеры запускало, и ещё чего-то там делало,
    что под SysV лечилось лишь напильником.
    Хахаха... Ты нашёл замшелую граблю обильно присыпанную пылью веков. Всё дело
    в том, что lxc использует SIGPWR для останова контенйнеров, а в inittab'e от
    SysV-init прописано обработчик "pf::powerwait:/etc/init.d/powerfail start"

    Если такая грабля существовала, это не то, с чем сталкивался я...
    Насчёт SIGPWR не знаю, скорее всего он используется, но конечный результат
    зависит и от процесса, управляющего контейнером, и от поведения init'а
    внутри контейнера. Вот у меня контейнеры с дебианами примерно от 2008 года
    (с апдейтами, да), с такими строчками в inittab'e:

    # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop

    причём никаких /etc/init.d/power* нет, а системы нормально гасятся и
    поднимаются. Под systemd.
    Так systemd плевать хотел на /etc/initttab. Он им не пользуется. И на SIGPWR
    тоже, т.к. у Поттеринга на него алергия:

    -- cut --
    My recommendatin: don't bother with SIGPWR. Traditionally on UNIX UPS
    software sends SIGPWR to PID 1 to initiate some special kind of
    shutdown operation. But it's very vaguely defined only, and one
    wonders why a normal shutdown isn't enough here, and why to bounce
    this off PID 1 with a special UNIX signal even...

    I am pretty sure that power management software that runs in userspace
    really shouldn't make use of this anymore. It should just request a
    normal shutdown. The only reason why one would want to bother with
    SIGPWR at all is that some really power-related old kernel drivers
    send SIGPWR to PID 1 too.

    From the systemd PoV: this stuff is ugly legacy crap that only exists
    for historic reasons and was never really well-defined in its
    behavour. It mostly appears to be a concept that exists only because
    Linux never had a useful IPC that was accessible from both kernelspace
    and userspace in a sane way... In systemd, we don't want anything to
    do with it, but some legacy folks really think it's superduper
    important. Hence we simply map it to a target unit, and enable users
    to map it to whatever they want to map it, but don't do anything smart
    about it at all on our own.

    I think it would be best of people would just forget about it...

    Lennart
    -- cut --

    так что, там используется SIGRTMIN+4, потмоу что вот.

    Когда я игрался с подобными контейнерами под SysV, там было примерно
    такое: по lxc-stop контейнер шустро сворачивается, а потом lxc-stop
    висит 2-3 минуты, ожидая какого-то ответа из сокета, и выдаёт
    невразумительное сообщение об ошибке. При этом в контейнере ничего
    не ломается.
    Там было 2 проблемы - кривость в использовании io_uring, и ещё какие-то
    проблемы с управляющим терминалом (точнее с детачингом от него демонов,
    которые ну очень хотят в него отсылать сообщения).
    Но меня эта проблема не волнует - контейнеры останавливаются редко, спешки в
    этом никакой нет. А то, что надо прям сейчас - подхватит другой контейнер,
    после того, как init убъет VRRP демона. А что он там будет делать дальше -
    никого уже не волнует.

    И много подобных неудобств и граблей было, всех уже не вспомнить...

    Если сегодня под SysV инфраструктура lxc нормально живёт, это замечательно,
    но мне надо было вчера, и для этих задач я для себя выбрал systemd.
    У меня и работает со вчера. Только пришлось немного посмотреть, почему оно
    так. А верить в магию systemd "просто поставь его" - это не наш метод.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Fri Sep 15 20:00:01 2023
    On Fri, Sep 15, 2023 at 05:03:50PM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    . 2008
    ( , ), inittab'e:

    # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop

    ޣ /etc/init.d/power* ,
    . systemd.
    systemd /etc/initttab. .

    : " 2008 ". , SysV,
    , . , ...

    SIGPWR , .. :

    : ,
    SIGPWR , Σ .

    -- :
    , .
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Tue Sep 19 09:20:01 2023
    Eugene Berdnikov <bd4@protva.ru> wrote:
    On Fri, Sep 15, 2023 at 05:03:50PM +0300, Andrey Jr. Melnikov wrote:
    Eugene Berdnikov <bd4@protva.ru> wrote:
    внутри контейнера. Вот у меня контейнеры с дебианами примерно от 2008 года
    (с апдейтами, да), с такими строчками в inittab'e:

    # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop

    причём никаких /etc/init.d/power* нет, а системы нормально гасятся и
    поднимаются. Под systemd.
    Так systemd плевать хотел на /etc/initttab. Он им не пользуется.
    В верхней строчке написано: "дебианы от 2008 года". Ясное дело, там SysV,
    в контейнере, а не снаружи. Ты бы хоть читал то, на что отвечаешь...

    Я говорил про lxc и его поведение. То, что у тебя контейнеры тупили при
    остановке в 60 секунд - это оно и есть - сначала посылается SIGPWR, на
    который нет реакци, ждётся 60 секунд и посылается SKIGKILL всему, что там
    запущенно.

    И на SIGPWR тоже, т.к. у Поттеринга на него алергия:

    Согласен с Поттерингом: да, все варианты проблем с электропитанием в один
    лишь SIGPWR запихнуть невозможно, потому и сакрального смысла в нём нет.

    Трахаться с ним или сразу закопать -- решать Поттерингу: он свои силы
    тратит на движение прогресса, а мы пользуемся результатом.
    Увы, Лёня ещё тот чудак на другую букву. И ничего нового (кроме сказок о том
    как всё устарело) он и не сделал. Поэтому, SIGPWR как был - так и остался. И
    вместо скриптика - вызывает sigpwr.target. Я бы понял, если бы он сделал 3
    сигнала SIGPWR для информирования о том, что питание пропало, SIGRTMIN+x1
    для информирования о том, что питание появилось обратно и SIGRTMIN+x2 - для
    emergency power shutdown - был бы разговор о прогрессе и удобстве.
    А так - вот вам SIGPWR и всё дальше сами угадывайте. Да, задизайнить
    SIGRTMIN+4 в poweroff и SIGRTMIN+14 в immediate poweroff - смог, но это
    деление ничего не даёт в случае с пропаданием питания. Ни-че-го. Только
    скриптик вызывающий "shutdown -h 0" заменили на sigpwr.target. Иннновации, ё!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Tue Sep 19 09:20:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:
    On 14/09/2023 18:26, Andrey Jr. Melnikov wrote:
    Вопрос не во вложенности, а имеено в том, что на физическом хосте
    start-stop-daemon путается в запущенном. Следи за руками:

    ~# ps ax | grep cron
    1722 ? Ss 0:00 /usr/sbin/cron -f
    23546 ? Ss 0:00 /usr/sbin/cron
    23772 pts/0 S+ 0:00 grep cron

    А научить его действительно проблема? Наугад попробовал

    ps -eo pid,pidns,user,cmd f

    контейнер выделяется по pidns. У меня, конечно systemd, но pidns же lxc
    вроде создает, так что это влиять не должно.

    Нет, не проблема. Проблема написать баг-репорт и донести его нужность до
    маинтайнеров, у которых теперь есть на всё одна отмазка "sysvinit устарел,
    под systemd всё работает (C)".

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Andrey Jr. Melnikov on Thu Sep 21 17:30:01 2023
    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Я бы понял, если бы он сделал 3
    сигнала SIGPWR для информирования о том, что питание пропало, SIGRTMIN+x1
    для информирования о том, что питание появилось обратно и SIGRTMIN+x2 - для
    emergency power shutdown - был бы разговор о прогрессе и удобстве.

    Лично у меня сомнения, что этим должен заниматься именно init. Вроде
    задача для пользовательского процесса, который сходит спросит, сколько
    заряда осталось у аккумулятора, а потом уже будет решать, на сколько
    спешно надо останавливать систему. В ноутбуках акселерометры, по которым
    можно парковать головки жесткого диска при падении, доступны просто как
    файлы в /sys. Реакция на событие нужна за доли секунды, а init для этого
    не обязателен.

    Не убедительно, что сообщать о пропадании/восстановлении питания надо
    именно разными сигналами.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Eugene Berdnikov on Thu Sep 21 17:20:01 2023
    On 19/09/2023 14:17, Eugene Berdnikov wrote:
    On Tue, Sep 19, 2023 at 10:02:00AM +0300, Andrey Jr. Melnikov wrote:
    Max Nikulin wrote:
    контейнер выделяется по pidns. У меня, конечно systemd, но pidns же lxc
    вроде создает, так что это влиять не должно.

    Нет, не проблема. Проблема написать баг-репорт и донести его нужность до
    маинтайнеров, у которых теперь есть на всё одна отмазка "sysvinit устарел,
    под systemd всё работает (C)".

    Писать лучше патч, с ним багрепорт имеет намного больше шансов на успех.
    Хотя и это не всегда помогает...

    Я бы еще добавил, что договариваться надо скорее с разработчиками,
    которые сейчас поддерживают start-stop-daemon, чем с сопровождающими пакет.

    Странное ощущение возникло от этого обсуждения. Участники вдоволь
    оттоптались на граблях, представляют, в каком месте надо чинить, вроде
    есть возможность проверить, что исправленная версия будет правильно
    работать, но заниматься этим должен кто-то другой, у кого, возможно,
    времени хватает только на то, чтобы следить, что под systemd работает.

    P.S. А если демон намеренно решил самоизолироваться в своем pidns? Не
    сравняется ли в результате SysV init по развесистости с systemd, если
    учесть все эти нюансы?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Sat Sep 23 21:20:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:
    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Я бы понял, если бы он сделал 3
    сигнала SIGPWR для информирования о том, что питание пропало, SIGRTMIN+x1
    для информирования о том, что питание появилось обратно и SIGRTMIN+x2 - для
    emergency power shutdown - был бы разговор о прогрессе и удобстве.

    Лично у меня сомнения, что этим должен заниматься именно init.
    init должен запускать просто нужный target/script/runlevel/чётамещё.

    Вроде задача для пользовательского процесса, который сходит спросит, сколько
    заряда осталось у аккумулятора, а потом уже будет решать, на сколько
    спешно надо останавливать систему. В ноутбуках акселерометры, по которым
    можно парковать головки жесткого диска при падении, доступны просто как
    файлы в /sys.
    Диск сам запаркуется. Он тупо ближе к акселерометру и быстрее.

    Реакция на событие нужна за доли секунды, а init для этого не обязателен.
    Он для этого и не нужен. init и обработка realtime сигналов - это из области
    фантастики. особенно с systemd который обязательно захочет послать сигнал
    через dbus текущей парковалке головок диска.

    Не убедительно, что сообщать о пропадании/восстановлении питания надо
    именно разными сигналами.
    Для ноутбука - может и не убедительно, а для удалённого UPS, который где-то
    там по сети висит и по SNMP мониториться - ещё как убедительно.

    Вот и смотри - есть демон, который мониторит сосотяние UPS'a - пропало
    питание - посылает сигнал, появилось - посылает сигнал (ну тут всё
    стандартно, так уже лет 40 делают). Просто удобнее, когда у тебя есть
    понимание - init дернул power-loss скриптик, в котором уже можно оценить
    масштаб проблемы, остановить нужное и принять решение - ждём восстановления
    или отключаемся. Или init дернул power-restored - когда поднимаем
    остановленное или в зависимости от - тупо перезагружаемся.
    Нет, через один SIGPWR это тоже всё решалось и решается, только вот скриптик
    будет разляпистее.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Andrey Jr. Melnikov on Sun Sep 24 10:00:01 2023
    On 24/09/2023 01:52, Andrey Jr. Melnikov wrote:
    Вот и смотри - есть демон, который мониторит сосотяние UPS'a - пропало
    питание - посылает сигнал, появилось - посылает сигнал (ну тут всё
    стандартно, так уже лет 40 делают). Просто удобнее, когда у тебя есть
    понимание - init дернул power-loss скриптик, в котором уже можно оценить
    масштаб проблемы, остановить нужное и принять решение - ждём восстановления
    или отключаемся. Или init дернул power-restored - когда поднимаем
    остановленное или в зависимости от - тупо перезагружаемся.
    Нет, через один SIGPWR это тоже всё решалось и решается, только вот скриптик
    будет разляпистее.

    Я все еще сомневаюсь, нужно ли здесь завязываться на init.

    Почему обычный демон не может сам запускать, в зависимости от ситуации,
    либо power-loss, либо power-restored скрипты? В чем польза того, что в
    промежутке между ними init и сигналы?

    Единственное преимущество от SIGPWR, которое я вижу, - это
    зафиксированный API. Недостаток - API очень ограниченный. Даже если
    добавить еще сигналов, то становится не очевидно, какому сигналу
    соответствует событие. /etc/inittab как известная точка конфигурации для
    меня не убедительное достоинство, не SysV init может использовать другой
    файл, чтобы назначать обработчики.

    Если скрипты запускаются напрямую демоном, который слушает SNMP, то
    событий может быть несколько и со вполне нормальными именами. Главная
    проблема - договориться о именах скриптов и их параметрах. Иначе будет
    головная боль с тем, что у каждого производителя UPS они будут свои и не
    очень совместимые между собой. Да, договариваться сложно, уходящий
    корнями в прошлое SIGPWR, выглядит более знакомым и поэтому привлекательным.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?=D0=9C=D0=B8=D1=85=D0=B0=@21:1/5 to All on Sun Sep 24 12:50:01 2023
    Для того чтобы демон ИБП мог потушить весь сервер ему нужны соответствующие права, а он может быть запущен с понижением привилегий. И посла
    ь сигнал SIGPWR иниту он может, а вот уже запустить /sbin/shutdown — рожей не вышел.

    В воскресенье 24 сентябрь 2023 10:58:55 (+03:00), Max Nikulin пишет:

    On 24/09/2023 01:52, Andrey Jr. Melnikov wrote:
    Вот и смотри - есть демон, который мониторит сосотяние UPS'a - пропало
    питание - посылает сигнал, появилось - посылает сигнал (ну тут всё
    стандартно, так уже лет 40 делают). Просто удобнее, когда у тебя есть
    понимание - init дернул power-loss скриптик, в котором уже можно оценить
    масштаб проблемы, остановить нужное и принять решение - ждём восстановления
    или отключаемся. Или init дернул power-restored - когда поднимаем
    остановленное или в зависимости от - тупо перезагружаемся.
    Нет, через один SIGPWR то тоже всё решалось и решается, только вот скриптик
    будет разляпистее.

    Я все еще сомневаюсь, нужно ли здесь завязываться на init.

    Почему обычный демон не может сам запускать, в зависимости от ситуации, либо power-loss, либо power-restored скрипты? В чем польза того, что в промежутк
    е между ними init и сигналы?

    Единственное преимущество от SIGPWR, которое я вижу, - то зафиксированный API. Недостаток - API очень ограниченный. Даже если добавить еще сигна
    ов, то становится не очевидно, какому сигналу соответствует событие. /etc/inittab как известная точка конфигурации для меня не убедительное дос
    оинство, не SysV init может использовать другой файл, чтобы назначать обработчики.

    Если скрипты запускаются напрямую демоном, который слушает SNMP, то событий может быть несколько и со вполне нормальными именами. Главная п
    облема - договориться о именах скриптов и их параметрах. Иначе будет головная боль с тем, что у каждого производителя UPS они будут свои и не
    чень совместимые между собой. Да, договариваться сложно, уходящий корнями в прошлое SIGPWR, выглядит более знакомым и потому привлекательны
    .



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Sun Sep 24 15:40:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:
    On 24/09/2023 01:52, Andrey Jr. Melnikov wrote:
    Вот и смотри - есть демон, который мониторит сосотяние UPS'a - пропало
    питание - посылает сигнал, появилось - посылает сигнал (ну тут всё
    стандартно, так уже лет 40 делают). Просто удобнее, когда у тебя есть
    понимание - init дернул power-loss скриптик, в котором уже можно оценить
    масштаб проблемы, остановить нужное и принять решение - ждём восстановления
    или отключаемся. Или init дернул power-restored - когда поднимаем
    остановленное или в зависимости от - тупо перезагружаемся.
    Нет, через один SIGPWR это тоже всё решалось и решается, только вот скриптик
    будет разляпистее.

    Я все еще сомневаюсь, нужно ли здесь завязываться на init.

    Почему обычный демон не может сам запускать, в зависимости от ситуации,
    либо power-loss, либо power-restored скрипты? В чем польза того, что в
    промежутке между ними init и сигналы?
    Поздравляю, ты придумал init в софтине для UPS. Теперь все остальные должны
    знать про неё - а она должна знать про всё остальное.

    Единственное преимущество от SIGPWR, которое я вижу, - это
    Приемущество - то, что интерфейс сискола signal(..) известен всем и каждому,
    сигнал можно отослать без знания, что там у нас за init и в какой сокет ему
    надо что нашептать (и пустят ли туда этого демона).

    зафиксированный API. Недостаток - API очень ограниченный.
    Недостаток тут только один - невозможно выборочно остановить/запустить
    демоны, которые жрут электричество/обрабатывают данные.. Лишний target эту
    проблему слегка облегчает.

    Даже если добавить еще сигналов, то становится не очевидно, какому сигналу
    соответствует событие. /etc/inittab как известная точка конфигурации для
    т.е. прочитать в man'e про конфигурацию используемого init'a - это не модно?

    меня не убедительное достоинство, не SysV init может использовать другой
    файл, чтобы назначать обработчики.

    Если скрипты запускаются напрямую демоном, который слушает SNMP, то
    событий может быть несколько и со вполне нормальными именами. Главная
    проблема - договориться о именах скриптов и их параметрах. Иначе будет
    головная боль с тем, что у каждого производителя UPS они будут свои и не
    очень совместимые между собой. Да, договариваться сложно, уходящий
    корнями в прошлое SIGPWR, выглядит более знакомым и поэтому привлекательным.
    Опять-же - ты придумал init.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Andrey Jr. Melnikov on Sun Sep 24 19:10:01 2023
    On 24/09/2023 20:29, Andrey Jr. Melnikov wrote:
    Поздравляю, ты придумал init в софтине для UPS. Теперь все остальные должны
    знать про неё - а она должна знать про всё остальное.

    Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не
    расширяют. Мне кажется это странным, если можно запускать в зависимости
    от события один из скриптов или скрипт с параметром, который зависит от
    события. Решение, что именно делать, принимается вне init (который
    процесс PID 1). А скрипт, который позовет демон UPS, вполне может
    останавливать и запускать сервисы, менять runlevel, то есть использовать
    инфраструктуру SysV init. SIGPWR и дополнительные сигналы при этом не нужны.

    Я сейчас глянул https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS

    Usage of SIGPWR and /etc/powerstatus is discouraged. Someone wanting to interact with init should use the /run/initctl control channel - see the initctl(5) manual page for more documentation about this.

    То есть даже в SysV init сигнал решили закопать. Что меня смутило, так
    это то, что initctl нашелся только в finit. Осталась некоторая
    неопределенность, что именно решили сделать в SysV init, но вроде как
    раз речь о том, что процессу init (PID 1) не нужно знать, что там с
    питанием, это можно делегировать демону UPS и скриптам.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Mon Sep 25 10:10:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:
    On 24/09/2023 20:29, Andrey Jr. Melnikov wrote:
    Поздравляю, ты придумал init в софтине для UPS. Теперь все остальные должны
    знать про неё - а она должна знать про всё остальное.

    Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не
    расширяют. Мне кажется это странным, если можно запускать в зависимости
    от события один из скриптов или скрипт с параметром, который зависит от
    события. Решение, что именно делать, принимается вне init (который
    процесс PID 1). А скрипт, который позовет демон UPS, вполне может
    останавливать и запускать сервисы, менять runlevel, то есть использовать
    инфраструктуру SysV init. SIGPWR и дополнительные сигналы при этом не нужны.
    Вот SIGPWR - это и есть изменение runlevel'а. Только сигналом - а не telinit
    или shutdown.
    И не надо изоброжать из себя init - для этого он уже есть. Это его задача -
    знать, как запустить или остановить всё то, что а) запущено здесь и сейчас,
    б) прописано в target/скриптике/rc.pf.d/где-то-там-еще.


    Я сейчас глянул https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS

    Usage of SIGPWR and /etc/powerstatus is discouraged. Someone wanting to interact with init should use the /run/initctl control channel - see the initctl(5) manual page for more documentation about this.

    То есть даже в SysV init сигнал решили закопать. Что меня смутило, так
    это то, что initctl нашелся только в finit. Осталась некоторая
    неопределенность, что именно решили сделать в SysV init, но вроде как
    раз речь о том, что процессу init (PID 1) не нужно знать, что там с
    питанием, это можно делегировать демону UPS и скриптам.
    Это отдельный подвид альтернативно одарённых. Мало ли, что они там не
    рекомендуют - интерфейс есть, и доступен без знаний "какой там magic надо
    послать в /run/initctl в каком-то-там namespace". Да и сами они не
    удосужились написать в свой-же telinit поддержку своего-же
    INIT_CMD_(POWERFAIL|POWERFAILNOW|POWEROK).

    Это всё показатель того, что эта часть вообще никому не нужна. Все теперь
    стоят в DC сертифицированных по Tier-III, где проблемы с электропитанием
    решаются оборудованием DC, а получить состояние питания - невозможно в
    принципе. А на процент пользователей с домашним UPS - наплевать, они и сами
    себе запилят что надо и как надо.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Victor Wagner@21:1/5 to All on Mon Sep 25 12:00:01 2023
    В Mon, 25 Sep 2023 00:04:03 +0700
    Max Nikulin <manikulin@gmail.com> пишет:

    On 24/09/2023 20:29, Andrey Jr. Melnikov wrote:
    Поздравляю, ты придумал init в софтине для UPS. Теперь все
    остальные должны знать про неё - а она должна знать про всё
    остальное.

    Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не
    расширяют. Мне кажется это странным, если можно запускать в

    Если хороший интерфейс расширить, он станет посредственным, а то и
    плохим
    --
    Victor Wagner <vitus@wagner.pp.ru>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to All on Mon Sep 25 14:20:01 2023
    On 24/09/2023 17:00, Михаил Касаджиков wrote:
    Для того чтобы демон ИБП мог потушить весь сервер ему нужны
    соответствующие права, а он может быть запущен с понижением привилегий.
    И послать сигнал SIGPWR иниту он может, а вот уже запустить
    /sbin/shutdown — рожей не вышел.

    Не могу сообразить, что именно я пропустил. Послать сигнал init тоже
    может не любой процесс. Вызвать kill может любой, но в ответ может
    получить EPERM. Иначе любой взбесившийся php скрипт на shared hosting
    мог бы слать сигналы init. Или считается, что оставить демону UPS
    CAP_KILL это приемлемое решение, а сделать так, чтобы пользователь, под
    которым работает этот демон, мог выполнить фиксированную команду, уже плохо?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Victor Wagner on Mon Sep 25 14:30:01 2023
    On 25/09/2023 16:42, Victor Wagner wrote:
    В Mon, 25 Sep 2023 00:04:03 +0700
    Max Nikulin пишет:

    Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не
    расширяют. Мне кажется это странным, если можно запускать в

    Если хороший интерфейс расширить, он станет посредственным, а то и
    плохим

    Я не могу вспомнить, по какому поводу я когда-то давно лазил в
    /etc/inittab, то ли respawn кому-то был нужен, то ли еще что. Но почитав
    вчера https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS
    я перестал понимать, куда его дальше-то расширять? Вроде наоборот хотят
    сузить, выкинув /etc/powerstatus, по которому определяется, какой из 3
    скриптов запускать по SIGPWR

    If init is not in single user mode and receives a powerfail signal
    (SIGPWR), it reads the file /etc/powerstatus. It then starts a command
    based on the contents of this file:

    F(AIL)
    Power is failing, UPS is providing the power. Execute the powerwait
    and powerfail entries.
    O(K)
    The power has been restored, execute the powerokwait entries.
    L(OW)
    The power is failing and the UPS has a low battery. Execute the
    powerfailnow entries.

    Я не в восторге от такого решения, но и предлагавшиеся 3 сигнала, с моей
    точки зрения, не лучше.

    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Я бы понял, если бы он сделал 3 сигнала SIGPWR для информирования о том,
    что питание пропало, SIGRTMIN+x1 для информирования о том, что питание
    появилось обратно и SIGRTMIN+x2 - для emergency power shutdown - был бы
    разговор о прогрессе и удобстве.

    Это про systemd было.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?=D0=9C=D0=B8=D1=85=D0=B0=@21:1/5 to All on Mon Sep 25 17:30:01 2023
    В понедельник 25 сентябрь 2023 15:11:04 (+03:00), Max Nikulin пишет:

    On 24/09/2023 17:00, Михаил Касаджиков wrote:
    Для того чтобы демон ИБП мог потушить весь сервер ему нужны
    соответствующие права, а он может быть запущен с понижением привилегий.
    И послать сигнал SIGPWR иниту он может, а вот уже запустить
    /sbin/shutdown — рожей не вышел.

    Не могу сообразить, что именно я пропустил. Послать сигнал init тоже может не любой процесс. Вызвать kill может любой, но в ответ может получить
    EPERM. Иначе любой взбесившийся php скрипт на shared hosting мог бы слать сигналы init. Или считается, что оставить демону UPS CAP_KILL то приемлемое решение
    , а сделать так, чтобы пользователь, под которым работает тот демон, мог выполнить фиксированную команду, уже плохо?

    Ну отправит иниту кто угодно сигнал SIGPWR, запустит инит соответствующий скрипт, тот, в свою очередь увидит что нет причин для беспокойства и
    ничего не сделает. Опять же, в те времена, когда всё то придумывали, не было shared hosting в его нынешнем виде. Другое дело что всю ту систему до
    ма не довели, вот и имеем то что имеем — ПО для ИБП предпочитает всё делать самостоятельно.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Tue Sep 26 09:30:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:

    On 25/09/2023 16:42, Victor Wagner wrote:
    В Mon, 25 Sep 2023 00:04:03 +0700
    Max Nikulin пишет:

    Нет. Я увидел сожаление, что такой хороший интерфейс, как SIGPWR не
    расширяют. Мне кажется это странным, если можно запускать в

    Если хороший интерфейс расширить, он станет посредственным, а то и
    плохим

    Я не могу вспомнить, по какому поводу я когда-то давно лазил в
    /etc/inittab, то ли respawn кому-то был нужен, то ли еще что. Но почитав
    вчера https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS
    я перестал понимать, куда его дальше-то расширять? Вроде наоборот хотят
    сузить, выкинув /etc/powerstatus, по которому определяется, какой из 3
    скриптов запускать по SIGPWR
    Даа, читал ты его явно по диагонали. Сейчас POWEROK событие выглядит так -
    записать OK в /etc/powerstatus (по старому стилю, с 2010 гда - устарело) или
    в /var/run/powerstatus (по новому) и послать SIGPWR сигнал - тогда init
    запустит нужный скрипт. Или воспользоваться вторым интерфейсом - записать в
    управляющий FIFO /run/initctl управляющую структуру из int'ов (без
    конкретного указания размерности, хахаха) нужный набор данных.
    А я предлагал сделать проще - весь этот цирк с конями дополнить сигналами.

    If init is not in single user mode and receives a powerfail signal (SIGPWR), it reads the file /etc/powerstatus. It then starts a command based on the contents of this file:

    F(AIL)
    Power is failing, UPS is providing the power. Execute the powerwait
    and powerfail entries.
    O(K)
    The power has been restored, execute the powerokwait entries.
    L(OW)
    The power is failing and the UPS has a low battery. Execute the
    powerfailnow entries.
    Я не в восторге от такого решения, но и предлагавшиеся 3 сигнала, с моей
    точки зрения, не лучше.
    Т.е. с твоей точки зраения один signal(1, SIGRTMIN+x) хуже чем вся эта
    пляска вокруг файликов с сигналами и FIFO?

    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Я бы понял, если бы он сделал 3 сигнала SIGPWR для информирования о том,
    что питание пропало, SIGRTMIN+x1 для информирования о том, что питание
    появилось обратно и SIGRTMIN+x2 - для emergency power shutdown - был бы
    разговор о прогрессе и удобстве.

    Это про systemd было.
    Увы, в systemd тоже этого не сделали.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to All on Tue Sep 26 12:20:01 2023
    On 25/09/2023 22:23, Михаил Касаджиков wrote:
    Ну отправит иниту кто угодно сигнал SIGPWR, запустит инит
    соответствующий скрипт, тот, в свою очередь увидит что нет причин для
    беспокойства и ничего не сделает. Опять же, в те времена, когда всё это
    придумывали, не было shared hosting в его нынешнем виде. Другое дело что
    всю эту систему до ума не довели, вот и имеем то что имеем — ПО для ИБП
    предпочитает всё делать самостоятельно.

    kill -PWR 1
    bash: kill: (1) - Operation not permitted

    Ну не может такого быть, чтобы в многопользовательской системе любой
    непривилегированный процесс мог послать сигнал любому другому процессу.
    И в те времена, когда придумывали сигналы, UNIX был
    многопользовательским. Я потому и переспросил.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Eugene Berdnikov on Tue Sep 26 16:50:01 2023
    On Tue, Sep 12, 2023 at 10:55:46PM +0300, Eugene Berdnikov wrote:
    On Sun, Sep 10, 2023 at 11:02:39PM +0700, Max Nikulin wrote:
    [...]
    Мои попытки сделать в скрипте цикл и на каждой итерации проверять,
    запустился rsyslogd или нет, не привели к успеху даже в варианте
    "5 итераций и ожидание 3 секунды после перезапуска" -- всё равно бывали
    случаи, когда процесс не запускался. Автоподъём по крону эту проблему
    решает, но нужно понимать, что иногда система живёт без сислога.

    А оригинальный init скрипт с этой задачей не справлялся что-ли? Какие-то
    сложности с сетевыми сокетами или что-то другое?

    Вытащил скрипт из свежего orphan-sysvinit-scripts, о котором я не знал.
    Там скрипт совсем свеженький, датирован 3 сентября 2023. При сравнении
    с моим собственным скриптом (последняя правка от 30-янв-2022) нашлось
    лишь одно отличие: у меня start-stop-daemon вызывается с опцией -oknodo,
    в остальном скрипты по сути совпадают. И выяснилось, что сейчас оба
    успешно перезапускают rsyslogd... :)

    Но не тут-то было: сегодня 4 раза подряд rsyslogd не запустился... :)
    На том же хосте, где 2 недели назад проверялся orphan-sysvinit-scripts.

    В чём была проблема -- мне тогда
    докопаться не удалось (уже не помню, почему, кажется, под strace эта
    зараза всегда успешно работала, а без strace процесс исчезал, не оставляя
    ни корки, ни других следов). Возможно, багу пофиксили, поскольку ryslog
    с тех пор обновлялся, в том числе совсем недавно:

    2023-08-19 21:42:26 upgrade rsyslog:i386 8.2306.0-2 8.2308.0-1
    --
    Eugene Berdnikov

    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Andrey Jr. Melnikov on Wed Sep 27 12:40:02 2023
    On 26/09/2023 14:19, Andrey Jr. Melnikov wrote:
    Max Nikulin wrote:

    https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS
    я перестал понимать, куда его дальше-то расширять? Вроде наоборот хотят
    сузить, выкинув /etc/powerstatus, по которому определяется, какой из 3
    скриптов запускать по SIGPWR
    Даа, читал ты его явно по диагонали.

    Тем не менее единственное новое, что я увидел в пересказе, - это
    /var/run/powerstatus, что не особенно принципиально (из разряда мелочь,
    но приятно).

    L(OW)
    The power is failing and the UPS has a low battery. Execute the
    powerfailnow entries.
    Я не в восторге от такого решения, но и предлагавшиеся 3 сигнала, с моей
    точки зрения, не лучше.
    Т.е. с твоей точки зраения один signal(1, SIGRTMIN+x) хуже чем вся эта
    пляска вокруг файликов с сигналами и FIFO?

    Я думаю, мы ни до чего не договоримся, да и не важно, ведь ни на что это
    не повлияет.

    Да, у меня прямо противоположное мнение о том, какой интерфейс лучше
    подходит. Перенумеровать все возможные события - затея гиблая, люди в
    них начнут путаться. Надо ведь еще и имена им дать. Поэтому я против 3-х
    сигналов.

    Я думаю, что когда люди выбрали один SIGPWR + /etc/powerstatus, они
    рассматривали 3 сигнала и остановились на варианте, который сейчас
    выглядит несколько вычурным.

    Послать-то сигнал может и просто, а вот правильно поймать уже некоторое
    искусство. Чинить обработчики сигналов - трудоемкий процесс. За это я
    сигналы не люблю.

    С сокетами проще. Если есть утилита и библиотека, которые могут слать
    нужные сообщения, и процесс их может правильно обработать, то это лучше,
    чем сигналы. Мне такой вариант нравится больше.

    А вообще, можно и полностью избавить init от кода, специфичного для
    обработки событий питания. Все равно это сводится к более общему и
    универсальному интерфейсу "запустить команду с параметрами". Вот пусть
    демон UPS и просит выполнить один из вариантов "powerfail start",
    "powerfail now", "powerfail stop" (ну или что-то похожее) прямым текстом
    без эфвемизмов вроде нумерованных сигналов.

    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Я бы понял, если бы он сделал 3 сигнала SIGPWR для информирования о том,
    что питание пропало, SIGRTMIN+x1 для информирования о том, что питание
    появилось обратно и SIGRTMIN+x2 - для emergency power shutdown - был бы
    разговор о прогрессе и удобстве.

    Это про systemd было.
    Увы, в systemd тоже этого не сделали.

    Я бы еще понял ругань, что в systemd отломали старые интерфейсы. С
    ininctl вообще какой-то абсурд. Он сообщения понимает, но просто плюется
    в логи, что обновляйте свой UPS.

    Cигналов в systemd как раз выше крыши:

    On 19/09/2023 14:00, Andrey Jr. Melnikov wrote:
    Да, задизайнить
    SIGRTMIN+4 в poweroff и SIGRTMIN+14 в immediate poweroff - смог

    Ну вот 2 сигнала уже есть. Точнее там другая интерпретация SIGPWR:
    готовьтесь, питание может кончится, а запускаемые скрипты уже могут
    что-то делать, хоть тот же powerstatus читать.

    Если питание вернулось, то для этого есть

    SIGRTMIN+0
    Enters default mode, starts the default.target unit.
    This is mostly equivalent to systemctl isolate default.target.

    Ну просто мечта любителя сигналов.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Eugene Berdnikov on Thu Sep 28 12:40:01 2023
    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.

    А в консоль он что-нибудь пишет, когда не может запуститься?
    Останавливается перед этим нормально?

    В чём была проблема -- мне тогда
    докопаться не удалось (уже не помню, почему, кажется, под strace эта
    зараза всегда успешно работала, а без strace процесс исчезал, не оставляя
    ни корки, ни других следов).

    Либо не крэш, либо не может запись core файла подавлена. Как минимум 2
    места есть: rlimits и sysctl kernel.core*, описано в core(5).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Max Nikulin on Thu Sep 28 16:20:01 2023
    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 используется для взаимодействия со своими же
    тредами, но поскольку на send() возвращается ECONNREFUSED, то скорее всего
    тред-писатель уже не слушает, и потому в логе сообщения об кзите нет.
    Зачем далее открывается ещё один сокет, и делается попытка соединиться
    с /dev/log (то самим-то rsyslogd, да ещё по получении SIGTERM!),
    я не понимаю. И, честно говоря, совершенно не горю желанием разбираться,
    поскольку, повторюсь, страшно подумать, что там внутри...

    Хотя может я просто чайник и не способен понять логику из трейса.
    Например, зачем самому себе посылать SIGTTOU, причём внутри обработчика
    сигнала (поскольку далее идёт sigreturn()).

    В чём была проблема -- мне тогда
    докопаться не удалось (уже не помню, почему, кажется, под strace та
    зараза всегда успешно работала, а без strace процесс исчезал, не оставляя
    ни корки, ни других следов).

    Либо не крш, либо не может запись core файла подавлена. Как минимум 2 места
    есть: rlimits и sysctl kernel.core*, описано в core(5).

    # sysctl -a | fgrep kernel.core
    kernel.core_pattern = core
    kernel.core_pipe_limit = 0
    kernel.core_uses_pid = 0

    # ulimit -c
    unlimited

    # limit coredumpsize
    coredumpsize unlimited

    Перезапускаем (/etc/init.d/rsyslog restart) и ура, с первого раза поймали.

    # ps -C rsyslogd fww
    PID TTY STAT TIME COMMAND
    #

    # ls -al core
    ls: невозможно получить доступ к 'core': Нет такого файла или каталога

    # find / -mount -name core
    #

    А пока я всё то копипастил сюда, запускаемый по крону монитор отловил
    факт отсутствия процесса и запустил его:

    # ps -C rsyslogd fww
    PID TTY STAT TIME COMMAND
    1053061 ? Ssl 0:00 /usr/sbin/rsyslogd

    Кстати, с тех пор как я писал сюда об "успешных" кспериментах по запуску
    rsyslogd, тот опять обновился, и нынче его версия 8.2308.0-1, для i386.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Max Nikulin on Thu Sep 28 22:40:01 2023
    Max Nikulin <manikulin@gmail.com> wrote:
    On 26/09/2023 14:19, Andrey Jr. Melnikov wrote:
    Max Nikulin wrote:

    https://manpages.debian.org/bookworm/sysvinit-core/init.8.en.html#CHANGING_RUNLEVELS
    я перестал понимать, куда его дальше-то расширять? Вроде наоборот хотят
    сузить, выкинув /etc/powerstatus, по которому определяется, какой из 3
    скриптов запускать по SIGPWR
    Даа, читал ты его явно по диагонали.

    Тем не менее единственное новое, что я увидел в пересказе, - это
    /var/run/powerstatus, что не особенно принципиально (из разряда мелочь,
    но приятно).

    L(OW)
    The power is failing and the UPS has a low battery. Execute the
    powerfailnow entries.
    Я не в восторге от такого решения, но и предлагавшиеся 3 сигнала, с моей
    точки зрения, не лучше.
    Т.е. с твоей точки зраения один signal(1, SIGRTMIN+x) хуже чем вся эта
    пляска вокруг файликов с сигналами и FIFO?

    Я думаю, мы ни до чего не договоримся, да и не важно, ведь ни на что это
    не повлияет.
    А чего тогда разговаривать...

    Да, у меня прямо противоположное мнение о том, какой интерфейс лучше
    подходит. Перенумеровать все возможные события - затея гиблая, люди в
    них начнут путаться. Надо ведь еще и имена им дать. Поэтому я против 3-х
    сигналов.

    Я думаю, что когда люди выбрали один SIGPWR + /etc/powerstatus, они
    рассматривали 3 сигнала и остановились на варианте, который сейчас
    выглядит несколько вычурным.
    Когда они его выбирали - про SIGRTMIN ещё даже никто и не думал. SIGRTMIN
    появится только в POSIX 1003.1b а это 1993 год. Собственно по этому там
    такой изощрённый мультиплексор с файликом - сигнал один, а передать
    состоняие надо больше чем одно.

    Послать-то сигнал может и просто, а вот правильно поймать уже некоторое
    искусство. Чинить обработчики сигналов - трудоемкий процесс. За это я
    сигналы не люблю.
    Вот и не надо перекладывать свои "люблю-нелюблю" на всех. Сигналы -
    хорошее, правильное асинхронное средство донести до процесса необходимую
    информацию.

    С сокетами проще. Если есть утилита и библиотека, которые могут слать
    нужные сообщения, и процесс их может правильно обработать, то это лучше,
    чем сигналы. Мне такой вариант нравится больше.
    Проще? Создать сокет, открыть сокет, крутить select() в цикле, обрабатывать
    ошибки, прочитать сокет (если прочитается), закрыть сокет.. и это все вместо
    одного signal handler?

    Нее, всё, больше с тобой разговривать не о чем, если ты совершенно не
    понимаешь условия задачи. Ты можешь во все запускаемые скрипты добавлять
    опрос ups - если тебе так удобно. Но мне - удобнее иметь три отдельных
    сигнала, три отдельных точки запуска - в которых в зависиомости от типа UPS
    будут или не будут отключатся сетевы интерфесы, система будет уходить в
    suspend-to-disk или полный power-off.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Jr. Melnikov@21:1/5 to Eugene Berdnikov on Thu Sep 28 23:20:01 2023
    Eugene Berdnikov <bd4@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 ---

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Fri Sep 29 08:50:01 2023
    On Thu, Sep 28, 2023 at 11:52:49PM +0300, Andrey Jr. Melnikov wrote:
    и он перед кзитом выполняет такой код:

    [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 висит сокет, а не файл, и потому там send(2).

    Ничего интересного
    тут нет. Самое интересное - почему сдох слушатель, но того в трейсе у тебя
    нет.

    Трейс там длинный, и чудесами типа вызова exit(2) из дочернего треда,
    и где там должен быть слушатель вообще непонятно (ведь коннектился он
    к тому сокету не тогда, когда я запустил strace, а несколькими часами
    раньше).

    Возможно, тот сокет с fd=1 используется для взаимодействия со своими же
    Это явно результат вызова openlog() где-то внутри syslog().

    Я догадываюсь, но syslogd, вызывающий openlog(), то форменная шиза...
    Ты не считаешь, что автора такого изделия нужно везти в психушку? :)
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Maksim Dmitrichenko@21:1/5 to All on Fri Sep 29 11:00:07 2023
    0L/RgiwgMjkg0YHQtdC90YIuIDIwMjPigK/Qsy4g0LIgMTI6MzcsIEV1Z2VuZSBCZXJkbmlrb3Yg PGJkNEBwcm90dmEucnU+Og0KDQo+ICDQn9C+0YLQvtC80YMg0LrQsNC6INC70Y7QsdC+0LUNCj4g INC00LXQudGB0YLQstC40LUsINC30LDRgtGA0LDQs9C40LLQsNGO0YnQtdC1IGxpYmMsINCz0YDQ vtC30LjRgiDRgNCw0LfQvdC+0YHQvtC8INGB0YLRjdC60LAsINC4INCy0L7QvtCx0YnQtSDQstC+ INCy0YDQtdC80Y8NCj4gINC+0LHRgNCw0LHQvtGC0LrQuCDRgdC40LPQvdCw0LvQsCDRgdC/0LvQ vtGI0Ywg0LzQuNC90L3Ri9C1INC/0L7Qu9GPLiDQkCDQutC+0LPQtNCwINC40Lcg0YHQuNCz0YXR jdC90LTQu9C10YDQsCDQstC10YDQvdGD0LvRgdGPLA0KPiAg0L3Rg9C20L3QviDQutCw0Lot0YLQ viDQvNC+0L3QuNGC0L7RgNC40YLRjCDRgtC+0YIg0YTQsNC60YIsINGH0YLQviDRgtC10LHQtSDQ v9GA0LjRiNGR0Lsg0YHQuNCz0L3QsNC7LCDRgi7QtS4g0YDRj9C00L7QvA0KPiAg0YEgcG9sbC9z ZWxlY3Qg0LHRg9C00LXRgiDQtdGJ0ZEg0LLRi9GH0LjRgtGL0LLQsNC90LjQtSDRgtC+0Lkg0L/Q tdGA0LXQvNC10L3QvdC+0LksINGBINGE0LvQsNCz0L7QvC4NCg0KDQrQrdGC0L4g0YLQvtC20LUg 0L3QtSDRgdC+0LLRgdC10Lwg0YLQsNC6LiDQktC+LdC/0LXRgNCy0YvRhSwgbWFuIDcgc2lnbmFs LXNhZmV0eSDRgdC+0LTQtdGA0LbQuNGCINGB0L/QuNGB0L7Qug0KYXN5bmMgc2lnbmFsIHNhZmUg 0YTRg9C90LrRhtC40LksINC60L7RgtC+0YDRi9C1INC80L7QttC90L4g0LTQtdGA0LPQsNGC0Ywg 0LjQtyDQvtCx0YDQsNCx0L7RgtGH0LjQutCwINGB0LjQs9C90LDQu9CwLg0K0JLQvi3QstGC0L7R gNGL0YUsINGC0YDRjtC6INGBINCz0LvQvtCx0LDQu9GM0L3Ri9C8INGE0LvQsNCz0L7QvCAtINC+ 0L0g0YLQsNC6INGB0LXQsdC1LCDQvtCx0YvRh9C90L4g0LvQuNCx0L4g0LIg0L/QsNC50L8NCtC/ 0LjRgdCw0LvQuCDQuNC3INC+0LHRgNCw0LHQvtGC0YfQuNC60LAg0YHQuNCz0L3QsNC70LAsINC6 0L7RgtC+0YDRi9C5INC20LTQsNC70Lgg0L3QsCDRgtC+0Lwg0YHQsNC80L7QvCBzZWxlY3Qn0LUg KNC4INGC0L7Qs9C00LANCtCy0L7Qv9GA0L7RgTog0L3QsNGF0YDQtdC90LAg0YLQsNC90YbRiyDR gSDRgdC40LPQvdCw0LvQsNC80LgsINC10YHQu9C4INGB0YDQsNC30YMg0LzQvtC20L3QviDQv9C4 0YHQsNGC0Ywg0LIgc29ja2V0PyksINC70LjQsdC+DQrQsiBzZW1fcG9zdCDQtNC10LvQsNC70Lgs INC60L7RgtC+0YDRi9C5INC80L7QttC90L4g0LTQtdC70LDRgtGMINC40Lcg0L7QsdGA0LDQsdC+ 0YLRh9C60LjQutCwLCDQvdC+IHNlbWFwaG9yZSDQv9C+DQrRgdGC0LDRgNC+0Lkg0LTQvtCx0YDQ vtC5IFVOSVgt0YLRgNCw0LTQuNGG0LjQuCAtINGN0YLQviDQu9C40LHQviDRhNCw0LnQuywg0LvQ uNCx0L4g0L/RgNC+0YbQtdGB0YEgKNC90LXRgiksINC/0L7RjdGC0L7QvNGDDQrQtdCz0L4g0L3Q uNC60LDQuiDQvdC1INC00L7Qu9C20LDRgtGM0YHRjyDQsiBzZWxlY3QvcG9sbC4NCg0KLQ0KV2l0 aCBiZXN0IHJlZ2FyZHMNCiAgTWFrc2ltIERtaXRyaWNoZW5rbw0K PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJn bWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPtC/0YIsIDI5INGB 0LXQvdGCLiAyMDIz4oCv0LMuINCyIDEyOjM3LCBFdWdlbmUgQmVyZG5pa292ICZsdDs8YSBocmVm PSJtYWlsdG86YmQ0QHByb3R2YS5ydSI+YmQ0QHByb3R2YS5ydTwvYT4mZ3Q7Ojxicj48L2Rpdj48 YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHgg MC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0 OjFleCI+wqDQn9C+0YLQvtC80YMg0LrQsNC6INC70Y7QsdC+0LU8YnI+DQrCoNC00LXQudGB0YLQ stC40LUsINC30LDRgtGA0LDQs9C40LLQsNGO0YnQtdC1IGxpYmMsINCz0YDQvtC30LjRgiDRgNCw 0LfQvdC+0YHQvtC8INGB0YLRjdC60LAsINC4INCy0L7QvtCx0YnQtSDQstC+INCy0YDQtdC80Y88 YnI+DQrCoNC+0LHRgNCw0LHQvtGC0LrQuCDRgdC40LPQvdCw0LvQsCDRgdC/0LvQvtGI0Ywg0LzQ uNC90L3Ri9C1INC/0L7Qu9GPLiDQkCDQutC+0LPQtNCwINC40Lcg0YHQuNCz0YXRjdC90LTQu9C1 0YDQsCDQstC10YDQvdGD0LvRgdGPLDxicj4NCsKg0L3Rg9C20L3QviDQutCw0Lot0YLQviDQvNC+ 0L3QuNGC0L7RgNC40YLRjCDRgtC+0YIg0YTQsNC60YIsINGH0YLQviDRgtC10LHQtSDQv9GA0LjR iNGR0Lsg0YHQuNCz0L3QsNC7LCDRgi7QtS4g0YDRj9C00L7QvDxicj4NCsKg0YEgcG9sbC9zZWxl Y3Qg0LHRg9C00LXRgiDQtdGJ0ZEg0LLRi9GH0LjRgtGL0LLQsNC90LjQtSDRgtC+0Lkg0L/QtdGA 0LXQvNC10L3QvdC+0LksINGBINGE0LvQsNCz0L7QvC48L2Jsb2NrcXVvdGU+PGRpdj48YnI+0K3R gtC+INGC0L7QttC1INC90LUg0YHQvtCy0YHQtdC8INGC0LDQui4g0JLQvi3Qv9C10YDQstGL0YUs IG1hbiA3IHNpZ25hbC1zYWZldHkg0YHQvtC00LXRgNC20LjRgiDRgdC/0LjRgdC+0LogYXN5bmMg c2lnbmFsIHNhZmUg0YTRg9C90LrRhtC40LksINC60L7RgtC+0YDRi9C1INC80L7QttC90L4g0LTQ tdGA0LPQsNGC0Ywg0LjQtyDQvtCx0YDQsNCx0L7RgtGH0LjQutCwINGB0LjQs9C90LDQu9CwLiDQ ktC+LdCy0YLQvtGA0YvRhSwg0YLRgNGO0Log0YEg0LPQu9C+0LHQsNC70YzQvdGL0Lwg0YTQu9Cw 0LPQvtC8IC0g0L7QvSDRgtCw0Log0YHQtdCx0LUsINC+0LHRi9GH0L3QviDQu9C40LHQviDQsiDQ v9Cw0LnQvyDQv9C40YHQsNC70Lgg0LjQtyDQvtCx0YDQsNCx0L7RgtGH0LjQutCwINGB0LjQs9C9 0LDQu9CwLCDQutC+0YLQvtGA0YvQuSDQttC00LDQu9C4INC90LAg0YLQvtC8INGB0LDQvNC+0Lwg c2VsZWN0JiMzOTvQtcKgKNC4INGC0L7Qs9C00LAg0LLQvtC/0YDQvtGBOiDQvdCw0YXRgNC10L3Q sCDRgtCw0L3RhtGLINGBINGB0LjQs9C90LDQu9Cw0LzQuCwg0LXRgdC70Lgg0YHRgNCw0LfRgyDQ vNC+0LbQvdC+INC/0LjRgdCw0YLRjCDQsiBzb2NrZXQ/KSwg0LvQuNCx0L4g0LIgc2VtX3Bvc3Qg 0LTQtdC70LDQu9C4LCDQutC+0YLQvtGA0YvQuSDQvNC+0LbQvdC+INC00LXQu9Cw0YLRjCDQuNC3 INC+0LHRgNCw0LHQvtGC0YfQutC40LrQsCwg0L3QviBzZW1hcGhvcmUg0L/QviDRgdGC0LDRgNC+ 0Lkg0LTQvtCx0YDQvtC5IFVOSVgt0YLRgNCw0LTQuNGG0LjQuCAtINGN0YLQviDQu9C40LHQviDR hNCw0LnQuywg0LvQuNCx0L4g0L/RgNC+0YbQtdGB0YEgKNC90LXRgiksINC/0L7RjdGC0L7QvNGD INC10LPQviDQvdC40LrQsNC6INC90LUg0LTQvtC70LbQsNGC0YzRgdGPINCyIHNlbGVjdC9wb2xs Ljxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi08YnI+PC9kaXY+PC9kaXY+PGRpdiBkaXI9 Imx0ciIgY2xhc3M9ImdtYWlsX3NpZ25hdHVyZSI+PGRpdiBkaXI9Imx0ciI+PGRpdj5XaXRoIGJl c3QgcmVnYXJkczxicj7CoCBNYWtzaW0gRG1pdHJpY2hlbmtvPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+DQo=

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Andrey Jr. Melnikov on Fri Sep 29 10:40:02 2023
    On Thu, Sep 28, 2023 at 11:30:47PM +0300, Andrey Jr. Melnikov wrote:
    Max Nikulin <manikulin@gmail.com> wrote:
    Послать-то сигнал может и просто, а вот правильно поймать уже некоторое
    искусство. Чинить обработчики сигналов - трудоемкий процесс. За это я
    сигналы не люблю.
    Вот и не надо перекладывать свои "люблю-нелюблю" на всех. Сигналы -
    хорошее, правильное асинхронное средство донести до процесса необходимую
    информацию.

    Информация там очень скудна, по сути исчерпывается списком сигналов
    (с некоторыми вольностями в трактовке, включая USR1/USR2).

    С сокетами проще. Если есть утилита и библиотека, которые могут слать
    нужные сообщения, и процесс их может правильно обработать, то это лучше,
    чем сигналы. Мне такой вариант нравится больше.
    Проще? Создать сокет, открыть сокет, крутить select() в цикле, обрабатывать
    ошибки, прочитать сокет (если прочитается), закрыть сокет.. и это все вместо
    одного signal handler?

    Ой, не надо сказки про "один signal handler"... Он один, когда нужно
    застрелицца. Да и то если твоя прога ничего полезного не делает, так что
    может просто не обрабатывать этот сигнал. А во всех нетривиальных случаях
    хэндлер может лишь поставить флаг в переменной, описанной как sig_atomic_c
    (static volatile ...) и вернуться через sigreturn(). Потому как любое
    действие, затрагивающее libc, грозит разносом стэка, и вообще во время
    обработки сигнала сплошь минные поля. А когда из сигхэндлера вернулся,
    нужно как-то мониторить тот факт, что тебе пришёл сигнал, т.е. рядом
    с poll/select будет ещё вычитывание той переменной, с флагом. Когда же она
    вычитана и мы знаем, что сигнал получен, встанет отдельный квест, как
    эту переменную безопасно вычистить, чтобы не потерять повторный сигнал,
    который может придти именно в момент очистки. Такое вполне может быть,
    если это не SIGTERM, который обычно одиночный и повторение которого
    ничего не меняет.

    По сравнению с этим добавление в poll/select одного сокета, на котором
    принимаются команды управления, это просто детская задачка.

    Сигналы хороши тем, что на вычитывание своего флага не нужен дорогущий
    сискол. Поэтому мониторингом сигналов можно нашпиговать самые горячие
    участки кода. Но и цена грамотного программирования здесь очень высока.
    Особенно если программа многопоточная.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Maksim Dmitrichenko@21:1/5 to All on Fri Sep 29 10:50:01 2023
    0LLRgiwgMjYg0YHQtdC90YIuIDIwMjPigK/Qsy4g0LIgMTE6MjQsIEFuZHJleSBKci4gTWVsbmlr b3YgPHRlbW5vdGEuYW1AZ21haWwuY29tPjoNCg0KPiDQkCDRjyDQv9GA0LXQtNC70LDQs9Cw0Lsg 0YHQtNC10LvQsNGC0Ywg0L/RgNC+0YnQtSAtINCy0LXRgdGMINGN0YLQvtGCINGG0LjRgNC6INGB INC60L7QvdGP0LzQuCDQtNC+0L/QvtC70L3QuNGC0Ywg0YHQuNCz0L3QsNC70LDQvNC4Lg0KPg0K Li4uLg0KDQo+INCiLtC1LiDRgSDRgtCy0L7QtdC5INGC0L7Rh9C60Lgg0LfRgNCw0LXQvdC40Y8g 0L7QtNC40L0gc2lnbmFsKDEsIFNJR1JUTUlOK3gpINGF0YPQttC1INGH0LXQvCDQstGB0Y8g0Y3R gtCwDQo+INC/0LvRj9GB0LrQsCDQstC+0LrRgNGD0LMg0YTQsNC50LvQuNC60L7QsiDRgSDRgdC4 0LPQvdCw0LvQsNC80Lgg0LggRklGTz8NCj4NCg0K0KXRg9C20LUgQVBJLCDRh9C10LwgQVBJINC9 0LAg0YHQuNCz0L3QsNC70LDRhSwg0L/RgNC40LTRg9C80LDRgtGMLCDQutCw0LbQtdGC0YHRjywg 0YLRgNGD0LTQvdC+LiDQodC40LPQvdCw0LvRiyAtINGN0YLQviwNCtC10YHQu9C4INC+0YLQutGA 0L7QstC10L3QvdC+LCDQutC+0YHRgtGL0LvRjCDQv9GA0LjQtNGD0LzQsNC90L3Ri9C5INCy0L4g 0LLRgNC10LzQtdC90LAg0LrQtdGA0L3QuNCz0LDQvdC+0LfQvtGPLCDQutC+0YLQvtGA0YvQuSDQ ug0K0YLQvtC80YMg0LbQtSDRgdC40LvRjNC90L4g0L/QvtGA0YLQuNGCINC60L7QvdGG0LXQv9GG 0LjRjiwg0YfRgtC+INCyIFVOSVgg0LLRgdGRINC70LjQsdC+INC/0YDQvtGG0LXRgdGBLCDQu9C4 0LHQviDRhNCw0LnQuywNCtC40LHQviDRgdC40LPQvdCw0LsgLSDQvdC4INGC0L4sINC90Lgg0LTR gNGD0LPQvtC1LCDQtdCz0L4g0L3QtdC70YzQt9GPINC20LTQsNGC0Ywg0YHQtdC70LXQutGC0L7Q vCAo0L3QvtCy0L7QvNC+0LTQvdGL0LkNCnNpZ25hbGZkINC90LUg0LIg0YHRh9GR0YIpLiDQpdGN 0L3QtNC70LXRgCDRgdC40LPQvdCw0LvQsCAtINGN0YLQviDQvtGB0L7QsdC10L3QvdCw0Y8g0YHR g9GJ0L3QvtGB0YLRjCwg0L/RgNCw0LrRgtC40YfQtdGB0LrQuA0K0LrQsNC6INC+0LHRgNCw0LHQ vtGC0YfQuNC6INC/0YDQtdGA0YvQstCw0L3QuNGPINGD0YDQvtCy0L3RjyDRj9C00YDQsCwg0LPQ tNC1INC80L3QvtCz0L4g0YfQtdCz0L4g0L3QtdC70YzQt9GPLiDQodC40LPQvdCw0LvRiyDRgQ0K 0L/QvtGC0L7QutCw0LzQuCDRgtGA0LXQsdGD0Y7RgiDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3R i9GFINC80LXRgCDRgNCw0LHQvtGC0YsuINCh0LjQs9C90LDQu9GLINC90LUg0L3QsNC60LDQv9C7 0LjQstCw0Y7RgtGB0Y8g0LINCtC+0YfQtdGA0LXQtNGMLiDQldGB0LvQuCDRhdC+0YLQuNGC0LUg 0YHQtNC10LvQsNGC0YwgQVBJLCDRgtC+INGB0LjQs9C90LDQu9GLIC0g0L/RgNC10LrRgNCw0YHQ vdGL0Lkg0LDQvdGC0LjQv9Cw0YLRgtC10YDQvS4NCg0KLS0gDQpXaXRoIGJlc3QgcmVnYXJkcw0K ICBNYWtzaW0gRG1pdHJpY2hlbmtvDQo= PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+0LLRgiwgMjYg0YHQtdC90YIuIDIwMjPigK/Q sy4g0LIgMTE6MjQsIEFuZHJleSBKci4gTWVsbmlrb3YgJmx0OzxhIGhyZWY9Im1haWx0bzp0ZW1u b3RhLmFtQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnRlbW5vdGEuYW1AZ21haWwuY29tPC9h PiZndDs6PGJyPjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+0JAg0Y8g0L/R gNC10LTQu9Cw0LPQsNC7INGB0LTQtdC70LDRgtGMINC/0YDQvtGJ0LUgLSDQstC10YHRjCDRjdGC 0L7RgiDRhtC40YDQuiDRgSDQutC+0L3Rj9C80Lgg0LTQvtC/0L7Qu9C90LjRgtGMINGB0LjQs9C9 0LDQu9Cw0LzQuC48YnI+PC9ibG9ja3F1b3RlPjxkaXY+Li4uLsKgPC9kaXY+PGJsb2NrcXVvdGUg Y2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRl ci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPtCiLtC1 LiDRgSDRgtCy0L7QtdC5INGC0L7Rh9C60Lgg0LfRgNCw0LXQvdC40Y8g0L7QtNC40L0gc2lnbmFs KDEsIFNJR1JUTUlOK3gpINGF0YPQttC1INGH0LXQvCDQstGB0Y8g0Y3RgtCwPGJyPg0K0L/Qu9GP 0YHQutCwINCy0L7QutGA0YPQsyDRhNCw0LnQu9C40LrQvtCyINGBINGB0LjQs9C90LDQu9Cw0LzQ uCDQuCBGSUZPPzxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj7QpdGD0LbQtSBB UEksINGH0LXQvCBBUEkg0L3QsCDRgdC40LPQvdCw0LvQsNGFLCDQv9GA0LjQtNGD0LzQsNGC0Yws INC60LDQttC10YLRgdGPLCDRgtGA0YPQtNC90L4uINCh0LjQs9C90LDQu9GLIC0g0Y3RgtC+LCDQ tdGB0LvQuCDQvtGC0LrRgNC+0LLQtdC90L3Qviwg0LrQvtGB0YLRi9C70Ywg0L/RgNC40LTRg9C8 0LDQvdC90YvQuSDQstC+INCy0YDQtdC80LXQvdCwINC60LXRgNC90LjQs9Cw0L3QvtC30L7Rjywg 0LrQvtGC0L7RgNGL0Lkg0Log0YLQvtC80YMg0LbQtSDRgdC40LvRjNC90L4g0L/QvtGA0YLQuNGC INC60L7QvdGG0LXQv9GG0LjRjiwg0YfRgtC+INCyIFVOSVgg0LLRgdGRINC70LjQsdC+INC/0YDQ vtGG0LXRgdGBLCDQu9C40LHQviDRhNCw0LnQuywg0LjQsdC+INGB0LjQs9C90LDQuyAtINC90Lgg 0YLQviwg0L3QuCDQtNGA0YPQs9C+0LUsINC10LPQviDQvdC10LvRjNC30Y8g0LbQtNCw0YLRjCDR gdC10LvQtdC60YLQvtC8ICjQvdC+0LLQvtC80L7QtNC90YvQuSBzaWduYWxmZMKg0L3QtSDQsiDR gdGH0ZHRgikuINCl0Y3QvdC00LvQtdGAINGB0LjQs9C90LDQu9CwIC0g0Y3RgtC+INC+0YHQvtCx 0LXQvdC90LDRjyDRgdGD0YnQvdC+0YHRgtGMLCDQv9GA0LDQutGC0LjRh9C10YHQutC4INC60LDQ uiDQvtCx0YDQsNCx0L7RgtGH0LjQuiDQv9GA0LXRgNGL0LLQsNC90LjRjyDRg9GA0L7QstC90Y8g 0Y/QtNGA0LAsINCz0LTQtSDQvNC90L7Qs9C+INGH0LXQs9C+INC90LXQu9GM0LfRjy7CoNCh0LjQ s9C90LDQu9GLINGBINC/0L7RgtC+0LrQsNC80Lgg0YLRgNC10LHRg9GO0YIg0LTQvtC/0L7Qu9C9 0LjRgtC10LvRjNC90YvRhSDQvNC10YAg0YDQsNCx0L7RgtGLLsKg0KHQuNCz0L3QsNC70Ysg0L3Q tSDQvdCw0LrQsNC/0LvQuNCy0LDRjtGC0YHRjyDQsiDQvtGH0LXRgNC10LTRjC4g0JXRgdC70Lgg 0YXQvtGC0LjRgtC1INGB0LTQtdC70LDRgtGMIEFQSSwg0YLQviDRgdC40LPQvdCw0LvRiyAtINC/ 0YDQtdC60YDQsNGB0L3Ri9C5INCw0L3RgtC40L/QsNGC0YLQtdGA0L0uPC9kaXY+PGRpdj48YnI+ PC9kaXY+PC9kaXY+PHNwYW4gY2xhc3M9ImdtYWlsX3NpZ25hdHVyZV9wcmVmaXgiPi0tIDwvc3Bh bj48YnI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX3NpZ25hdHVyZSI+PGRpdiBkaXI9Imx0 ciI+PGRpdj5XaXRoIGJlc3QgcmVnYXJkczxicj7CoCBNYWtzaW0gRG1pdHJpY2hlbmtvPC9kaXY+ PC9kaXY+PC9kaXY+PC9kaXY+DQo=

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Eugene Berdnikov on Fri Sep 29 12:30:01 2023
    On 29/09/2023 13:45, Eugene Berdnikov wrote:
    On Thu, Sep 28, 2023 at 11:52:49PM +0300, Andrey Jr. Melnikov wrote:
    Это явно результат вызова openlog() где-то внутри syslog().

    Я догадываюсь, но syslogd, вызывающий openlog(), это форменная шиза...
    Ты не считаешь, что автора такого изделия нужно везти в психушку? :)

    Откуда столько яда? Жизнь штука разнообразная. Сообщение об остановке
    rsyslog вполне может осесть в логах:

    journalctl -b -1 -u rsyslog
    ... rsyslogd[1108]: [origin software="rsyslogd" swVersion="8.2302.0" x-pid="1108" x-info="https://www.rsyslog.com"] exiting on signal 15.

    Вообще у rsyslog несколько вродных модулей, откуда он может читать
    сообщения. /dev/log один из них, и может быть отключен в конфигурации.

    syslog(3) пытается открыть сокет заново, если попытка записи туда не
    удалась. Сделано это на случай того, что с прошлого вызова функции демон
    syslog перезапускался.

    Так что выглядит все штатно. Ну не получилось отправить сообщение в лог,
    потому что /dev/log в данном случае слушал сам rsyslog и уже закрыл сокет.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Maksim Dmitrichenko on Fri Sep 29 13:00:01 2023
    On Fri, Sep 29, 2023 at 12:53:28PM +0400, Maksim Dmitrichenko wrote:
    пт, 29 сент. 2023 г. в 12:37, Eugene Berdnikov <[1]bd4@protva.ru>:

    >  Потому как любое
    >  действие, затрагивающее libc, грозит разносом стэка, и вообще во время
    >  обработки сигнала сплошь минные поля. А когда из сигхэндлера вернулся,
    >  нужно как-то мониторить тот факт, что тебе пришёл сигнал, т.е. рядом
    >  с poll/select будет ещё вычитывание той переменной, с флагом.

    Это тоже не совсем так. Во-первых, man 7 signal-safety содержит список
    async signal safe функций, которые можно дергать из обработчика сигнала.

    Ну так наличие схемы раскладки мин не отменяет сам факт наличия минного
    поля, а также риска подорваться на нём. Прозевать мину тут легче лёгкого.

    Во-вторых, трюк с глобальным флагом - он так себе, обычно либо в пайп
    писали из обработчика сигнала, который ждали на том самом select'е (и

    Запись в пайп это сисколл, а потому очень долго и неэффективно. Повторю:
    сигналы хороши там, где нужна быстрая реакция, в самые горячих точках кода.
    Если это не нужно, то poll/select намного проще. Тут мы расходимся во
    взглядах с А.Мельниковым.
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Max Nikulin@21:1/5 to Eugene Berdnikov on Fri Sep 29 12:20:01 2023
    On 28/09/2023 21:09, Eugene Berdnikov wrote:
    On Thu, Sep 28, 2023 at 05:32:35PM +0700, Max Nikulin wrote:
    Останавливается перед этим нормально?

    Ммм... не знаю. Он при остановке что-то странное делает.

    Я скорее про то, что не остается ли старого pid-файла или еще
    какого-нибудь мусора. Проблем с таймаутом, чтобы заново открыть сетевой
    сокет, вроде быть не должно.

    # sysctl -a | fgrep kernel.core
    kernel.core_pattern = core

    Проблем с записью в cwd у rsyslog вроде не ожидается, но можно указать
    полный путь.

    kernel.core_pipe_limit = 0
    kernel.core_uses_pid = 0

    # ulimit -c
    unlimited

    # limit coredumpsize
    coredumpsize unlimited

    Я бы смотрел именно у работающего процесса с помощью prlimit.

    Проверить, не осталось ли ограницений, можно с помощью "kill -ABRT" (и
    удалить core после этого). На самом деле, я не особенно верю в segfault.

    Перезапускаем (/etc/init.d/rsyslog restart) и ура, с первого раза поймали.

    Куда-нибудь типа dmesg или в консоль никакие сообщения не попадают? Что
    если обернуть запуск, перенаправив stderr и stdout в файл, в надежде,
    что сругается до того, как станет демоном и отцепится. Совсем тихая
    смерть выглядит немного странно.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Maksim Dmitrichenko@21:1/5 to All on Fri Sep 29 14:40:02 2023
    0L/RgiwgMjkg0YHQtdC90YIuIDIwMjPigK/Qsy4g0LIgMTQ6NTAsIEV1Z2VuZSBCZXJkbmlrb3Yg PGJkNEBwcm90dmEucnU+Og0KDQo+ICDQl9Cw0L/QuNGB0Ywg0LIg0L/QsNC50L8g0Y3RgtC+INGB 0LjRgdC60L7Qu9C7LCDQsCDQv9C+0YLQvtC80YMg0L7Rh9C10L3RjCDQtNC+0LvQs9C+INC4INC9 0LXRjdGE0YTQtdC60YLQuNCy0L3Qvi4g0J/QvtCy0YLQvtGA0Y46DQo+ICDRgdC40LPQvdCw0LvR iyDRhdC+0YDQvtGI0Lgg0YLQsNC8LCDQs9C00LUg0L3Rg9C20L3QsCDQsdGL0YHRgtGA0LDRjyDR gNC10LDQutGG0LjRjywg0LIg0YHQsNC80YvQtSDQs9C+0YDRj9GH0LjRhSDRgtC+0YfQutCw0YUN Cj4g0LrQvtC00LAuDQo+ICDQldGB0LvQuCDRjdGC0L4g0L3QtSDQvdGD0LbQvdC+LCDRgtC+IHBv bGwvc2VsZWN0INC90LDQvNC90L7Qs9C+INC/0YDQvtGJ0LUuINCi0YPRgiDQvNGLINGA0LDRgdGF 0L7QtNC40LzRgdGPINCy0L4NCj4gINCy0LfQs9C70Y/QtNCw0YUg0YEg0JAu0JzQtdC70YzQvdC4 0LrQvtCy0YvQvC4NCj4NCg0K0J3RgyDQv9GA0L4g0YHQstC+0ZEg0L7RgtC90L7RiNC10L3QuNC1 INC6INGB0LjQs9C90LDQu9Cw0Lwg0Y8g0YPQttC1INC90LDQv9C40YHQsNC7INCyINC/0LXRgNCy 0L7QvCDQv9C40YHRjNC80LUg0LIg0Y3RgtC+0YIg0YLRgNC10LQuDQrQn9GA0L7QuNC30LLQvtC0 0LjRgtC10LvRjNC90L7QtSBBUEkg0L3QsCDRgdC40LPQvdCw0LvQsNGFINCy0YHRkSDRgNCw0LLQ vdC+INC90LUg0YHQtNC10LvQsNGC0Ywg0YLQvtC70LrQvtC8LCDRgtCw0Log0LrQsNC6INC00LLQ sCDQuA0K0LHQvtC70LXQtSDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L4g0L/RgNC40YjQ tdC00YjQuNGFINGB0LjQs9C90LDQu9CwINCyINC+0LTQvdC+0Lwg0LTQtdC70YzRgtCwLdC40L3R gtC10YDQstCw0LvQtSDQsdGD0LTRg9GCDQrRgNCw0YHRhtC10L3QtdC90Ysg0LrQsNC6INC+0LTQ uNC9LiDQn9C+0Y3RgtC+0LzRgyDQs9C+0YDQvtC00LjRgtGMINGC0LDQutGD0Y4g0YHRhdC10LzR gyDQvNC+0LbQvdC+LCDQtdGB0LvQuCDRjdGC0L4g0LTQvtCy0L7Qu9GM0L3Qvg0K0YDQtdC00LrQ vtC1INGB0L7QsdGL0YLQuNC1LiDQkCDQtdGB0LvQuCDQvtC90L4g0YDQtdC00LrQvtC1LCDRgtC+ INC/0ZHRgSDRgSDQvdC40LwgLSDRjdGC0L7RgiDQvtC00LjQvSDQu9C40YjQvdC40LkNCtGB0LjR gdGC0LXQvNC90YvQuSDQstGL0LfQvtCyLg0KDQotLQ0KV2l0aCBiZXN0IHJlZ2FyZHMNCiAgTWFr c2ltIERtaXRyaWNoZW5rbw0K PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJn bWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPtC/0YIsIDI5INGB 0LXQvdGCLiAyMDIz4oCv0LMuINCyIDE0OjUwLCBFdWdlbmUgQmVyZG5pa292ICZsdDs8YSBocmVm PSJtYWlsdG86YmQ0QHByb3R2YS5ydSI+YmQ0QHByb3R2YS5ydTwvYT4mZ3Q7Ojxicj48L2Rpdj48 YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHgg MC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0 OjFleCI+wqDQl9Cw0L/QuNGB0Ywg0LIg0L/QsNC50L8g0Y3RgtC+INGB0LjRgdC60L7Qu9C7LCDQ sCDQv9C+0YLQvtC80YMg0L7Rh9C10L3RjCDQtNC+0LvQs9C+INC4INC90LXRjdGE0YTQtdC60YLQ uNCy0L3Qvi4g0J/QvtCy0YLQvtGA0Y46PGJyPg0KwqDRgdC40LPQvdCw0LvRiyDRhdC+0YDQvtGI 0Lgg0YLQsNC8LCDQs9C00LUg0L3Rg9C20L3QsCDQsdGL0YHRgtGA0LDRjyDRgNC10LDQutGG0LjR jywg0LIg0YHQsNC80YvQtSDQs9C+0YDRj9GH0LjRhSDRgtC+0YfQutCw0YUg0LrQvtC00LAuPGJy Pg0KwqDQldGB0LvQuCDRjdGC0L4g0L3QtSDQvdGD0LbQvdC+LCDRgtC+IHBvbGwvc2VsZWN0INC9 0LDQvNC90L7Qs9C+INC/0YDQvtGJ0LUuINCi0YPRgiDQvNGLINGA0LDRgdGF0L7QtNC40LzRgdGP INCy0L48YnI+DQrCoNCy0LfQs9C70Y/QtNCw0YUg0YEg0JAu0JzQtdC70YzQvdC40LrQvtCy0YvQ vC48YnI+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+0J3RgyDQv9GA0L4g0YHQstC+ 0ZEg0L7RgtC90L7RiNC10L3QuNC1INC6INGB0LjQs9C90LDQu9Cw0Lwg0Y8g0YPQttC1INC90LDQ v9C40YHQsNC7INCyINC/0LXRgNCy0L7QvCDQv9C40YHRjNC80LUg0LIg0Y3RgtC+0YIg0YLRgNC1 0LQuINCf0YDQvtC40LfQstC+0LTQuNGC0LXQu9GM0L3QvtC1IEFQSSDQvdCwINGB0LjQs9C90LDQ u9Cw0YUg0LLRgdGRINGA0LDQstC90L4g0L3QtSDRgdC00LXQu9Cw0YLRjCDRgtC+0LvQutC+0Lws INGC0LDQuiDQutCw0Log0LTQstCwINC4INCx0L7Qu9C10LUg0L/QvtGB0LvQtdC00L7QstCw0YLQ tdC70YzQvdC+INC/0YDQuNGI0LXQtNGI0LjRhSDRgdC40LPQvdCw0LvQsCDQsiDQvtC00L3QvtC8 INC00LXQu9GM0YLQsC3QuNC90YLQtdGA0LLQsNC70LUg0LHRg9C00YPRgiDRgNCw0YHRhtC10L3Q tdC90Ysg0LrQsNC6INC+0LTQuNC9LiDQn9C+0Y3RgtC+0LzRgyDQs9C+0YDQvtC00LjRgtGMINGC 0LDQutGD0Y4g0YHRhdC10LzRgyDQvNC+0LbQvdC+LCDQtdGB0LvQuCDRjdGC0L4g0LTQvtCy0L7Q u9GM0L3QviDRgNC10LTQutC+0LUg0YHQvtCx0YvRgtC40LUuINCQINC10YHQu9C4INC+0L3QviDR gNC10LTQutC+0LUsINGC0L4g0L/RkdGBINGBINC90LjQvCAtINGN0YLQvtGCINC+0LTQuNC9INC7 0LjRiNC90LjQuSDRgdC40YHRgtC10LzQvdGL0Lkg0LLRi9C30L7Qsi48YnI+PGJyPi0tPGJyPjwv ZGl2PjwvZGl2PjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGly PSJsdHIiPjxkaXY+V2l0aCBiZXN0IHJlZ2FyZHM8YnI+wqAgTWFrc2ltIERtaXRyaWNoZW5rbzwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0K

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eugene Berdnikov@21:1/5 to Maksim Dmitrichenko on Fri Sep 29 19:50:01 2023
    On Fri, Sep 29, 2023 at 12:44:46PM +0400, Maksim Dmitrichenko wrote:
    Сигналы не накапливаются в очередь.

    Мне казалось, что вполне себе накапливаются, при SA_RESTART.
    В манах эта модель поведения называется "BSD semantics".
    Модель без накопления называется "SysV semantics".
    Можно выбрать алгоритм для конкретного сигнала.

    А для совершенно отмороженных экстремалов, желающих получать сигналы
    даже в сигхэндлере, есть SA_NODEFER, рекомендую. :)
    --
    Eugene Berdnikov

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)