Hacker News new | ask | show | jobs
by LukeShu 1331 days ago
> It shouldn't be this hard to stop a service gracefully.

It's not.

> you just need to drop a script into /etc/init.d symlink it from the appropriate rc directories.

You just need to drop a unit file into /etc/systemd/system/ and symlink it from the appropriate /etc/systemd/system/${target}.wants/ directories.

Don't tell me that "shutdown.target.wants" and "reboot.target.wants" are harder than "rc0.d" and "rc6.d".

A lot of the article is about ordering of dependencies (don't stop a dependency until after the dependent has stopped). Don't tell me that adding `Before=` and `After=` lines in the unit file is harder than having to remember all of the dependencies and manually figure out the correct "NN" for it all to work correctly.

A lot of the article is about either having your daemon handle SIGTERM, or coming up with the appropriate `ExecStop=` command. The same command you'd be writing in your rc script (the "handle SIGTERM" stuff being for if your rc script simply says `kill $PID`).

That is: The complex parts of the article are things that were complex with sysvinit too.

1 comments

There's also middle ground. OpenRC doesn't need those weird numbers while still being simple sysvinit/bash scripts-based system (it has a simple dependency system too). I'm not completely sure about `shutdown` level scripts having access to network though (too lazy to check), but it's still worth mentioning here.
OpenRC's great! But it doesn't detract from the point that systemd isn't nearly as complicated as some people act like it is.

PS: Who's still using OpenRC with heavy ol' sysvinit instead of the lighter openrc-init?