Я уже раньше подобное делал с помощью cron. Пришло время применить systemd timers.
Итак, настроим на сервере вечное 3-е сентября. Для этого первым делом надо отключить синхронизацию времени, в зависимости от того, как она настроена. В современных серверах скорее всего это сделает команда:
# timedatectl set-ntp falseДалее нам нужно установить дату на 3-е сентября и добавить в планировщик. Можно сделать это в лоб вот так:
# date -s "2025-09-03 00:00:00"Но тогда устанавливается время на 00:00. Можно сделать аккуратнее и менять только день, не трогая часы. Для этого создадим очень простой скрипт:
#!/bin/bash
now_date=$(date +%H:%M:%S)
now_year=$(date +%Y)
date -s "$now_year-09-03 $now_date"
Берём текущее время, текущий год и выставляем третье сентября текущего года с неизменным временем. Сохраняем скрипт в
/usr/local/bin/3sep.sh и делаем исполняемым:# chmod +x /usr/local/bin/3sep.shСоздаём systemd сервис -
/etc/systemd/system/3sep.service:[Unit]
Description=Set system date to September 3rd, po zavetam Shafutinskogo
[Service]
Type=oneshot
ExecStart=/usr/local/bin/3sep.sh
[Install]
WantedBy=multi-user.target
Делаем таймер для службы
/etc/systemd/system/3sep.timer:[Unit]
Description=Turn over the calendar every minute
[Timer]
OnCalendar=*:0/1
Unit=3sep.service
Persistent=false
[Install]
WantedBy=timers.target
Перечитываем конфигурацию и запускаем таймер со службой:
# systemctl daemon-reload# systemctl enable --now 3sep.serviceТеперь у вас постоянно переворачивается календарь и каждый день 3-е сентября. Подобную заготовку можно использовать под любой свой скрипт.
#юмор #systemd
