Помогите с timer'ом

Возможно ли средствами systemd timer'а сделать запуск каждую третью субботу (года).

PS И можно ли комбинировать oncalendar и onactivesec, так что-бы запуск был при одновременном выполнении обоих условий?
такие дела.
cucullus
Возможно ли средствами systemd timer'а сделать запуск каждую третью субботу (года).
Sat *-01-15..21 18:00:00
где позиция соответствует:
ДеньНедели Год-Месяц-День Часы:Минуты:Секунды

для проверки:
systemd-analyze calendar 'Sat *-01-15..21 18:00:00'

крайние варианты будут от 15 до 21 числа в месяце:

00 00 00 00 00 01 02
03 04 05 06 07 08 09
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
--------------------------
00 00 00 00 00 00 01
02 03 04 05 06 07 08
09 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
нее! не января! каждую третью субботу (по субботам раз в три недели).
такие дела.
cucullus
нее! не января! каждую третью субботу (по субботам раз в три недели).
ну так бы и писал, а то:
cucullus
запуск каждую третью субботу (года)
и уточни еще, без привязки к месяцу ? то есть не каждую третью субботу в месяце, а отсчет идет от первой субботы года и с периодом в три недели ?

upd
попробуй так:
systemd-analyze calendar 'Sat *-*-15..21 18:00:00'
Включаем комп. Запуск в ближайшую субботу и далее каждые 3 недели.
(считаем, что комп работает 24/7)

PS. Как я понимаю, условия таймера работают с логическим ИЛИ, а надо бы И..
такие дела.
Можно подумать использовать что то типа скрипта date --date="Nov 24, 2018"+Nweeks +%d-%m-%y,%A
N=3 - 15-12-18,Суббота
N=6 - 05-01-19,Суббота
N=9 - 26-01-19,Суббота
Ошибки не исчезают с опытом - они просто умнеют
ну тогда можно замутить что-то типа такого:
echo $(( $(date --date="$(systemd-analyze calendar 'Sat' | awk -F: '/Next/ {print $2}')" '+%s') + 3*7*24*60*60 ))
1545429600


$ systemd-analyze calendar @1545429600
  Original form: @1545429600
Normalized form: 2018-12-21 22:00:00 UTC
    Next elapse: Sat 2018-12-22 00:00:00 EET
       (in UTC): Fri 2018-12-21 22:00:00 UTC
       From now: 3 weeks 5 days left

то есть получаем ближайшую субботу
systemd-analyze calendar 'Sat'
затем преобразовываем её в UNIX time
date --date= ... | awk -F: '/Next/ {print $2}')" '+%s'
а затем просто прибавляем три недели
+ 3*7*24*60*60

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

Странно, что такой нехитрый, вроде, кейс нельзя _легко_ реализовать средствами таймера. А, ведь, есть ещё фазы луны... ;)
такие дела.
cucullus
Странно, что такой нехитрый, вроде, кейс нельзя _легко_ реализовать средствами таймера.
ну здесь как бы пограничный случай и по хорошему нужно реализовать цепочку из таймеров
1. скрипт определяет ближайшую субботу и запускает первый одноразовый таймер
2. первый одноразовый таймер срабатывает в выбранное время и запускает второй многоразовый таймер который уже отрабатывает с заданной периодичностью
На всякий случай кидаю интересную ссылку, может наведет на мысли.
Кстати date --date="Nov 24, 2018"+Nweeks +%d-%m-%y,%A навеяла эта статья.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.