LINUX.ORG.RU
ФорумAdmin

альтернатива Cron для нестандартных интервалов

 , ,


1

3

Как запланировать исполнение программы с интервалом 61 минута? 31 минута? 1день+1минута?
Стандартные планировщики типа семейства Cron, systemd.timer такое не умеют.

P.S. ChatGPT врывается в тред

how to execute a command in linux every 31 minute?
`*/31 * * * * command`
facepalm.bmp

★★★★★

Последнее исправление: Bers666 (всего исправлений: 1)

нагуглил скрипт, запускаем его по крону раз в минуту, он считает кол-во минут с начала Эпохи, находит остаток от деления на искомое кол-во минут , если 0 , то запускаем команду.

Ну такое..

Bers666 ★★★★★
() автор топика
Последнее исправление: Bers666 (всего исправлений: 1)

systemd.timer такое не умеют.

Не надо из 4.2 предпосылки делать бредовые выводы и терять время впустую на поиски ненужного. Всё он умеет. man 5 systemd.timer, man 7 systemd.time.

token_polyak ★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)

facepalm.bmp

Воистине.

Кто бы мог подумать, что чтобы запускать программу с интервалом в 31 минуту надо выставить интервал в 31 минуту. Это же совершенно нелогично 🤡

token_polyak ★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)
Ответ на: комментарий от Bers666

Смысл в том, что это расписание бегает на приблизительно 20 тысячах машин, и если все 20 тысяч будут ломиться в один эндпоинт разом, ему плохеет и он требует большего капасити. А если рандомно раскидать по времени, то ему норм и тратиться на капасити не нужно.

pekmop1024 ★★★★★
()
Ответ на: комментарий от Bers666

Ну тут ты не совсем прав.

OnUnitActiveSec - эта опция для запуска задания каждые (укажи свое значение) секунд, минут, часов, дней, недель, месяцев, лет.

Более подробно здесь,

https://wiki.archlinux.org/title/systemd/Timers

https://unix.stackexchange.com/questions/126786/systemd-timer-every-15-minutes

Nurmukh ★★★
()
Ответ на: комментарий от wandrien

нужно исполнять программу раз в 31 минуту.

в 0:00, 0:31, 1:02 итд

Давай timestamp для systemd-timer чтобы удовлетворить запросы ТС.

Не просто раз в 31 минуту, а с привязкой к часам начиная с 0:00

futurama ★★★★★
()
Ответ на: комментарий от Bers666

тебе критично чтобы пауза между двумя запусками была 30мин, т.е. 1мин работы программы + 30мин пауза = 31мин интервал? Привязка к часам 0:00, … не важна или таки важна?

futurama ★★★★★
()
Ответ на: комментарий от futurama

Привязка к часам 0:00

а, это откуда считать (начало отсчета) интервалы.
Да не особо важно, но в случае OnUnitActiveSec оно отсчитывается от момента старта юнита. Т.е. это не поддается контролю.

Bers666 ★★★★★
() автор топика
Ответ на: комментарий от Bers666


Вот рабочий вариант

```
[Timer]
OnUnitActiveSec=31min
OnActiveSec=2min
```

т.е. с момента запуска таймера - запустить сервис через 2 мин, и потом каждую 31 минуту.

Bers666 ★★★★★
() автор топика