systemd, the good parts: monotonic timers
When systemd makes you suffer because “run job every 10 minutes” is infinitely harder to specify than in crontab, remember there are monotonic timers in systemd that aren’t derived from wallclock time, or “Calendar Events” as they call it.
Run timer once 60 seconds after system startup, then every 10 minutes after the job finished:
# /etc/systemd/system/demo.timer
[Unit]
Description=demo monotonic timer
[Timer]
OnStartupSec=60
OnUnitInactiveSec=600
[Install]
WantedBy=timers.target # When in a system session
# WantedBy=default.target # When in a user session (~/.config/systemd, systemctl --user etc.)
Python: Use tabulate to format output in columns
#!/usr/bin/env python3
from tabulate import tabulate
data = [
[ 'foo', 'bar', 'baz' ],
[ 'spam', 'eggs', 'bacon' ]
]
headers = ['Eine', '2', 'Whatever']
print(tabulate(data, headers=headers, tablefmt='simple'))
Output:
$ ./tab.py
Eine 2 Whatever
------ ---- ----------
foo bar baz
spam eggs bacon
virsh/libvirt, automate key presses
(* Updated to sleep 5 seconds after each keypress.)
for key in R E I S U B; do virsh send-key "${domain}" KEY_LEFTALT KEY_SYSRQ KEY_${key}; sleep 5; done
@binblog the REISUB could need a little sleep between each key