Запустите Скрипт один раз в день с systemd

Это - замена для Списков аннулированных сертификатов. Вместо того, чтобы иметь необходимость загрузить (очень огромный) список всех отменяемых сертификатов для каждого корневого сертификата, удаленный сервер может быть запрошен для просто состояния определенного сертификата.

13
14.09.2012, 19:43
3 ответа

Я не думаю, что возможно сделать это полностью в systemd, поскольку это не отслеживает состояния между перезагрузками. Вы можете easly планировать что-то для выполнения спустя 10 минут за использованием начальной загрузки systemd.timer и OnBootSec= или OnStartupSec=.

Сам сценарий должен проверить, был ли он уже выполнен сегодня или нет. Это может быть легко реализовано даже в ударе, например:

#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`

[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE
5
27.01.2020, 19:53

См.: /lib/systemd/system/systemd-tmpfiles-clean.timer:

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

Это выполняет соответствие .service файл 15 спустя минуты после начальной загрузки и затем каждый день, в то время как система произошла. Если Вы перезагружаете многократно в тот же день, у Вас может просто быть резервная проверка сценария mtime архива и пропуска, которые работают, если это - меньше чем старый день.

Кроме того, если Ваши резервные копии будут тяжелыми на IO, могло бы быть полезно читать о IOScheduling* директивы в systemd.exec (5) страница справочника.

10
27.01.2020, 19:53

По-видимому, эта проблема будет решена в будущих выпусках. По крайней мере, согласно этой электронной почте в systemd-devel списке рассылки. До этого необходимо пойти hackish путем предложенный Krzysztof.

0
27.01.2020, 19:53

Теги

Похожие вопросы