Я хочу запускать скрипт резервного копирования через 10 минут после загрузки компьютера, но только один раз в день. Можно ли создать такие сценарии с помощью systemd?
echo "obnam backup" | at "now + 10 minutes"
Я хочу запускать скрипт резервного копирования через 10 минут после загрузки компьютера, но только один раз в день. Можно ли создать такие сценарии с помощью systemd?
echo "obnam backup" | at "now + 10 minutes"
Ответы:
Смотрите /lib/systemd/system/systemd-tmpfiles-clean.timer
:
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Соответствующий .service
файл запускается через 15 минут после загрузки, а затем каждый день, пока система работает. Если вы перезагружаетесь несколько раз в один и тот же день, вы можете просто сделать так, чтобы скрипт резервного копирования проверил mtime архива и пропустил его, если он меньше суток.
Также, если ваши резервные копии будут тяжелыми при вводе-выводе , может быть полезно прочитать о директивах IOScheduling * на man-странице systemd.exec (5) .
Я не думаю, что это возможно сделать полностью в systemd, так как он не отслеживает состояние между перезагрузками. Вы можете легко запланировать запуск чего-либо через 10 минут после загрузки и использования systemd.timer
ее OnBootSec=
или OnStartupSec=
.
Сам скрипт должен проверить, был ли он уже запущен сегодня или нет. Это может быть легко реализовано даже в bash, например:
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE