Well, systemd developers made one of the classic blunders a software developer can do: make a program that has to deal with time and dates. Every time I have to deal with timestamps I'm like "oh shit, here we go again".
Anyway, as I understood it the reason this is in systemd is because they wanted to replace cron, and it's fine by me because cron has it's own brain-hurt. (The cron syntax is something that always makes me squint real hard for a while.)
I'm sorry but Cron is really easy, of all systems.
Try using systemd with an ssh server that you want to have running on a non standard port. On non systemd it's a 15 second ordeal while on systemd I don't even know where to start, I pushed it out of my memories. It's something something create files here, restart demons there, removing other files, it is WAY WAY over complicated
Well cron is "really easy" as long as your requirements are really easy too.
Run a task at specific hour or minute or weekday or whatever? Easy peasy.
Run a task at complex intervals? What the fuck is this syntax. How do I get it right even. Guess I'll come back next week and see if it ran correctly.
Actually have to look at the calendar to schedule this stuff? Oh lawd here come the hacks, they're so wide, they're coming
Run a task at, say, granularity of seconds? Of course it's not supported, who would ever need that, if you really need that just do an evil janky shellscript hack
This is basically just a way nicer, more flexible cron syntax being dressed up as something ridiculous. There are legitimate reasons for wanting something like this, like running some sort of resource heavy disk optimization the first Friday evening of every month or something.
This plays some kind of role in the debate of systemd being good or not. I'm not sure if goes in the good column or the bad column, but I know it goes into a column.
I am typically in the group saying "systemd is overlarge with too many responsibilities" but this capability makes perfect sense for its job running services. Probably the good column.
This kinda functionality is surprisingly apropos to a problem I have a work, I realize. And yet, I have k8s. More and more I am appreciating the niche systemd can play with pets instead of cattle and wished corps weren't jumping to managed k8s and all of that complexity it entails immediately.
Have you tried emacs with evil mode? It's a bit slow, not as slow as VS code or anything, but not really fast. But it's basically neovim but you get to use lisp to configure it instead of lua
Just take the next step and make a text file you dump all these commands into and then forget about in a week. When you randomly stumble across it years from now you’ll be able to say “wow, I could have used this 10 months ago if I remembered it existed!”
I feel you. It’s however gotten a lot better since I turned some of these commands into abbreviations. They’re aliases that expands in place, more or less. Fish has them natively, I personally use zsh-abbr.
Using a large shell history (currently at 57283 entries) along with readline (and sometimes fzf) has served me well over the past few yeas when trying to remember past commands.
You need a calendar and time handling anyways for logging purposes and to set timers correctly. It's likely not that much extra work exposing that functionality.
No, UNIX philosophy demands that every single one of those things is one or more separate things and that half of them are poorly or not at all maintained. Just like God intended.
Don't do that in Norway either - just bad luck if the holidays happen to land on a weekend. On the other hand, we have five weeks of paid vacation, and holidays are not counted into those, I'm not sure how that's done in other countries?
but the UK has the fewest public holidays in Europe. In Germany we have 9-13 but don't get a day off if a public holiday is on a weekend.
And we have a minimum of 20/24 days of holiday on top
Honestly, Wednesday and Thursday are the worst days for Christmas for those of us who also get Christmas Eve because they're the only days that don't result in 4 days in a row off from work.
If it's on a Friday, we get Thursday through Saturday. If it's on a Saturday, Sunday, or Monday, they give us Friday through Monday, and if it's on a Tuesday, they give us Saturday through Tuesday.
But this year, we're off Saturday and Sunday, work Monday, are off Tuesday and Wednesday, and return to work on Thursday.
It's the same total number of days off, but it's way less useful - especially if travel is involved.
This is true for all public holidays in the UK, there's a (usually) fixed number of public holidays but the dates are flexible.
They're also included in the minimum 28 days paid time off too, meaning if you're a full time worker and have to work on a bank holiday your employer is legally required to offer an extra day off somewhere else instead, either a fixed date or added to your holiday allowance. Conversely, the "extra" day off you get when a monarch keels over may be subtracted from your holiday allowance for the year. This is also why my employer is allowed to follow English bank holidays despite having next to no presence in England; the number is fixed but the dates are not.
$ systemd-analyze calendar tomorrow
Failed to parse calendar specification 'tomorrow': Invalid argument
Hint: this expression is a valid timestamp. Use 'systemd-analyze timestamp "tomorrow"' instead?
$ systemd-analyze timestamp tuesday
Failed to parse "tuesday": Invalid argument
Hint: this expression is a valid calendar specification. Use 'systemd-analyze calendar "tuesday"' instead?
ಠ_ಠ
$ for day in Mon Tue Wed Thu Fri Sat Sun; do TZ=UTC systemd-analyze calendar "$day 02-29"|tail -2; done
Next elapse: Mon 2044-02-29 00:00:00 UTC
From now: 19 years 4 months left
Next elapse: Tue 2028-02-29 00:00:00 UTC
From now: 3 years 4 months left
Next elapse: Wed 2040-02-29 00:00:00 UTC
From now: 15 years 4 months left
Next elapse: Thu 2052-02-29 00:00:00 UTC
From now: 27 years 4 months left
Next elapse: Fri 2036-02-29 00:00:00 UTC
From now: 11 years 4 months left
Next elapse: Sat 2048-02-29 00:00:00 UTC
From now: 23 years 4 months left
Next elapse: Sun 2032-02-29 00:00:00 UTC
From now: 7 years 4 months left
(It checks out.)
Surprisingly its calendar specification parser actually allows for 31 days in every month:
$ TZ=UTC systemd-analyze calendar '02-29' && echo OK || echo not OK
Original form: 02-29
Normalized form: *-02-29 00:00:00
Next elapse: Tue 2028-02-29 00:00:00 UTC
From now: 3 years 4 months left
OK
$ TZ=UTC systemd-analyze calendar '02-30' && echo OK || echo not OK
Original form: 02-30
Normalized form: *-02-30 00:00:00
Next elapse: never
OK
$ TZ=UTC systemd-analyze calendar '02-31' && echo OK || echo not OK
Original form: 02-31
Normalized form: *-02-31 00:00:00
Next elapse: never
OK
$ TZ=UTC systemd-analyze calendar '02-32' && echo OK || echo not OK
Failed to parse calendar specification '02-32': Invalid argument
not OK
Usually such things have a simple explanation. systemd does a lot with time and date, for example scheduling tasks. It's quite obvious that it has this capabilities, when you think about it.
Usually such things have a simple explanation. systemd does a lot with time and date, for example scheduling tasks. It's quite obvious that it has this capabilities, when you think about it.
But that has been a complaint for 10 years and it's only gotten worse
I wouldn't mind systemd if it weren't for the fact that it was to be a startup system that promised to make everything easier and faster to startup yet managing systemd is a drag at best, and of it did one thing it's making my systems boot up like mud
Systemd ignored my calendar override for the builtin raid scanner, so every week my server would chug to a halt to scan the entire array.
In true systemd fashion, the documentation could not explain this behavior, so I had to make a full copy override instead of a merge override because reasons.
Yeah, I'm also one of these people silently enjoying systemd and wayland. Every now and then there's fuzz on one of these. I shrug, and move on still enjoying both of them.
They are also still complaining about PulseAudio, despite Pipewire having mostly replaced it, while spending hours fiddling with ALSA to use their headphones.
I've felt like systemd has been a breeze compared to the hodgepodge of different stuff that preceded it. Now most distros have it mostly the same way, tools are well documented, things works together. It wasn't always like that from what I remember
The 25th is a Wednesday, not a Tuesday like he was wanting. Tuesday is nice because you get a four-day weekend without using any days off. (Though, usually you'd get the next off if it was a Monday or Sunday or whatever.) I think the best is Friday or Monday because then New Year's gives you a three-day weekend too.
Students here usually get Mondays off when the next Tuesday is a holiday. As a university sysadmin, I cherish those days because that's when we can get actual work done without having to work around the chaotic classroom reservations or work in ten-minute bursts during breaks. It's also when we can implement changes to the network and update the servers because the office workers don't tend to come in.
The last time that happened, all of us sysadmins did about three months' worth of actual work in a few hours, then used the smaller lecture hall as a cinema for the rest of the day.
You must be either the very old get off my lawn type or very young and edgy. Everyone else in between likes systemd, one of the best things that happened to GNU/Linux in a while.