[Discuss] systemd Alternatives
Ron
ron at bclug.ca
Sun Jan 18 16:20:59 EST 2026
Kent Borg wrote on 2026-01-18 06:59:
> I admit I don't know much about systemd, but every time I brush into it
> it looks complicated and like it is a do-everything mess, built by
> accretion not design.
It's not a mess, and it's well designed, not built by accretion.
For a mess, look in the files in /etc/init.d - those scripts are a mess¹.
> I admit, I'm ignorant, but I *do* know that there
> is something wrong with their design that they have to patch sshd.
> Patching sshd is simply WRONG, so I wonder about alternatives.
Others have pointed out that patching sshd is common, what systemd is
probably doing is adding a call to ¿ sd_notify() ? when the service is
up and ready.
So services depending on it can be started. Pretty reasonable for a
services management system.
¹ Let's look at postfix, for example:
> systemctl cat postfix.service:
>
> systemctl cat postfix.service
> # /lib/systemd/system/postfix.service
> [Unit]
> Description=Postfix Mail Transport Agent
> Documentation=man:postfix(1)
> Conflicts=sendmail.service exim4.service
> ConditionPathExists=/etc/postfix/main.cf
>
> [Service]
> Type=oneshot
> RemainAfterExit=yes
> ExecStart=/bin/true
> ExecReload=/bin/true
>
> [Install]
> WantedBy=multi-user.target
We have a description and a pointer to the documentation.
We see that it shouldn't run if exim4 or sendmail are handling email
already. Nicely expressed.
We see that it won't start without /etc/postfix/main.cf. Again, nicely
expressed.
The ExecStart=/bin/true indicates this is supports multiple postfix
instances.
An individual postfix service instance:
> systemctl cat postfix at .service
>
> # /lib/systemd/system/postfix at .service
> [Unit]
> Description=Postfix Mail Transport Agent (instance %i)
> Documentation=man:postfix(1)
> PartOf=postfix.service
> Before=postfix.service
> ReloadPropagatedFrom=postfix.service
> After=network-online.target nss-lookup.target
> Wants=network-online.target
>
> [Service]
> Type=forking
> GuessMainPID=no
> ExecStartPre=/usr/lib/postfix/configure-instance.sh %i
> ExecStart=/usr/sbin/postmulti -i %i -p start
> ExecStop=/usr/sbin/postmulti -i %i -p stop
> ExecReload=/usr/sbin/postmulti -i %i -p reload
>
> [Install]
> WantedBy=multi-user.target
Now, /etc/init.d/postfix - I'm not even gonna post that here, anyone who
wants to look at the 129 lines (on my server) of script can do so, but
even as someone who knows bash, it's much harder to read what's going on.
I just noticed this in /etc/init.d/postfix, what the heck is it doing?!?
> TZ=
> unset TZ
Sets a variable ... to blank. Then unsets it?
Unsetting a non-existent variable does not generate any error, what is
this doing?
More information about the Discuss
mailing list