[systemd-devel] Q: logrotate and "systemctl kill -s HUP ..."

Mantas Mikulėnas grawity at gmail.com
Wed Sep 30 10:26:28 UTC 2020


On Wed, Sep 30, 2020 at 11:24 AM Ulrich Windl <
Ulrich.Windl at rz.uni-regensburg.de> wrote:

> Hi!
>
> I have a problem with logrotate: My postrotate command does not seem to
> send a HUP signal. However the files are rotated.
> I'm using this (not preferred way, I know):
>
> ...
>         postrotate
>                 test -s '/var/run/iotwatch-LOC1/iotwatch-LOC1.pid' &&
> systemctl kill -s HUP --kill-who=main iotwatch at LOC1.service
>         endscript
> ...
>
> I've verified that the PID file exists (just rebooted the server a few
> minutes ago):
> # ll /var/run/iotwatch-LOC1/iotwatch-LOC1.pid
> -rw-r--r-- 1 root root 5 Sep 30 10:07
> /var/run/iotwatch-LOC1/iotwatch-LOC1.pid
>

Do you need to check for it in the first place?

Does the same command work from interactive CLI?


>
> My service would log the arrival of any HUP signal, but it didn't. Also in
> syslog I could not find any error message related to "systemctl kill".
> What might be wrong?
>
> My service is using ExecStartPre, ExecStartPost, and ExecStart. Could
> systemd be confused about "--kill-who=main" then?


--kill-who=main means the signal will be sent to the "main" process that
was started from ExecStart (shown as "Main PID:" in systemctl status).

The more preferred way of doing this is to have "ExecReload=/bin/kill -HUP
$MAINPID" and then `systemctl reload foo.service`.

Sending HUP to ExecStartPre and ExecStartPost doesn't make sense, since
those are supposed to be short-running commands – they are not allowed to
actually *have* daemons.

-- 
Mantas Mikulėnas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20200930/18ed070c/attachment.htm>


More information about the systemd-devel mailing list