Назад | Перейти на главную страницу

Как systemd просит юниты перезагрузить конфигурацию?

Я читал man-страницу для systemctl reload и нашел это предложение о reload.

reload PATTERN...
    Asks all units listed on the command line to reload their
    configuration.

http://man7.org/linux/man-pages/man1/systemctl.1.html

Как systemd это делает? Какой API использует systemd, чтобы попросить юнит перезагрузить его конфигурацию?

Я также нашел reload-or-restart.

 reload-or-restart PATTERN...
     Reload one or more units if they support it. If not, restart them
     instead.

Как работает systemd знать если аппарат поддерживает перезагрузку?

Вот что на странице руководства systemd.service говорит о перезарядке:

       ExecReload=
           Commands to execute to trigger a configuration reload in the 
           service. This argument takes multiple command lines, following
           the same scheme as described for ExecStart= above. Use of
           this setting is optional. Specifier and environment variable
           substitution is supported here following the same scheme as
           for ExecStart=.

           One additional, special environment variable is set: if known,
           $MAINPID is set to the main process of the daemon, and may
           be used for command lines like the following:

               /bin/kill -HUP $MAINPID

           Note however that reloading a daemon by sending a signal
           (as with the example line above) is usually not a good
           choice, because this is an asynchronous operation and hence
           not suitable to order reloads of multiple services against
           each other. It is strongly recommended to set ExecReload=
           to a command that not only triggers a configuration reload
           of the daemon, but also synchronously waits for it to complete.

(Единственный способ узнать, что systemd.service правильная страница руководства для поиска была в Google для ExecReload, строка, которую я догадался, покопавшись в исходном коде Systemd.)