- cross-posted to:
- [email protected]
- [email protected]
- cross-posted to:
- [email protected]
- [email protected]
After a few conversations with people on Lemmy and other places it became clear to me that most aren’t aware of what it can do and how much more robust it is compared to the usual “jankiness” we’re used to.
In this article I highlight less known features and give out a few practice examples on how to leverage Systemd to remove tons of redundant packages and processes.
And yes, Systemd does containers. :)
Love me some systemd timers. Much more fun than cron.
EnvironmentFile=
journalctl -f
to watch long-running processes, which I’m not sure whether possible with cron* * * * *
, then forgetting it’s supposed to run in a minute, get distracted, come back in 15 minutesMy only complaint is it’s a bit verbose. I’d rather have it as an option inside the
.service
file. The.timer
requires some boilerplate like[Unit].description
(it… uh… triggers a service. that’s the description), andWantedBy=timers.target
. But these are small prices to payAnother thing I particularly like is
systemctl list-timers --all
and its overview of the timer statuses and when they’re going to run next.This can be solved through abstraction and automation.
In NixOS for example, you can declare a service that runs an arbitrary script every day like this:
{ systemd.services.your-service-here = { script = "echo 'Hello, world!'"; startAt = "daily"; }; }
This automatically creates a service file with the script in its
ExecStart
and an accompanying timer which runs daily and is part of thetimers.target
.Yep, I manage my servers and local machine with Ansible so I abstracted it with a role. This is indeed not that bad of a con because it’s still plaintext so automation is easy, but it’s still a minor issue ;)