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 [email protected]

# /lib/systemd/system/[email protected]
[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?

_______________________________________________
Discuss mailing list
[email protected]
https://lists.blu.org/mailman/listinfo/discuss

Reply via email to