[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