With #cron or #systemd timers, how can I run something every 2 minutes, except between 23:50 and 00:10?

I don't think there's a way to specify this, right? I can see having to write wrapper scripts to check the time and exit early.

#linux #unix #sysAdmin

Currently I'm using /usr/bin/ifNotNearMidnight as:

#!/bin/bash
t=$(date +\%H\%M)
if [[ "$t" > 2350 ]] || [[ "$t" < 0010 ]]
then
exit 1
fi

And then in cron:

* * * * * ifNotNearMidnight && ( cd /blah/ ; doTheThing )

@artfulrobot Are leading zeros not octal in this context?

@dalias

Sorta. The "<" does string comparison rather than integer comparison (which would use -lt and have octal issues…good catch on that possibility), but since the date(1) command produces 0-padded output like "0009", it should be fine:

$ [[ 9 < 0010 ]] && echo yep || echo nope
nope
$ [[ 0009 < 0010 ]] && echo yep || echo nope
yep

$ [[ 9 -lt 0010 ]] && echo yep || echo nope
nope
$ [[ 9 -lt 10 ]] && echo yep || echo nope
yep

@artfulrobot