Impossibile avviare il timer di Systemd
Ho la seguente configurazione del timer di systemd
[Unit]
Description=Timer for Service
[Timer]
Unit=service-unit.service
OnCalendar=Mon..Fri *-*-* 13..23:0,15,30,45:00
# *-*-* means every day and 10:00:00 is the time of day (UTC)
[Install]
WantedBy=timers.target
Quando tento di avviare il timer, ricevo il seguente messaggio di errore:
Failed to parse calendar specification, ignoring: Mon..Fri *-*-* 13..23...5,30,45:00 service-timer.timer lacks value setting. Refusing.
Ho provato a controllare il timestamp con systemd-analyze calendar "Mon..Fri *-*-* 13..23:5,30,45:00"ma la mia versione non sembra avere questa opzione. RitornaUnknown operation 'calendar'.
Quando si tenta su un server diverso in cui è disponibile l'opzione calendario, sembra essere un timestamp valido.
$ sudo systemd-analyze calendar "Mon..Fri *-*-* 13..23:0,15,30,45:00"
Original form: Mon..Fri *-*-* 13..23:0,15,30,45:00
Normalized form: Mon..Fri *-*-* 13..23:00,15,30,45:00
Next elapse: Thu 2020-09-10 14:00:00 EDT
(in UTC): Thu 2020-09-10 18:00:00 UTC
From now: 1min 21s left
Il server su cui non funziona è CentOS 7 e il server su cui funziona è Ubuntu 18.04 Minimal.
Risposte
La versione di systemd disponibile su CentOS 7 non supporta gli intervalli definiti con ... 13..23può essere espresso come 13/1(ore che iniziano alle 13 e poi ogni ora), ma penso che Mon..Fripossa essere espresso solo come l'elenco dei giorni, quindi
OnCalendar=Mon..Fri *-*-* 13..23:0,15,30,45:00
diventa
OnCalendar=Mon,Tue,Wed,Thu,Fri *-*-* 13/1:0,15,30,45:00
Grazie a tutti coloro che hanno risposto. Per me, l'opzione migliore era aggiornare systemd usando un backport da Facebook che ho trovato qui . In questo modo posso sfruttare le nuove funzionalità piuttosto che utilizzare soluzioni alternative.
Dopo l'aggiornamento da 219 a 231 ha funzionato senza problemi. Le istruzioni di aggiornamento di base fornite in quel repository sono le seguenti:
Istruzioni per l'installazione
- Assicurati di modificare / etc / selinux / config e mettere SELinux su permissive prima di aggiornare, altrimenti il tuo sistema non si avvierà più!
# wget https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/repo/epel-7/jsynacek-systemd-backports-for-centos-7-epel-7.repo -O /etc/yum.repos.d/jsynacek-systemd-centos-7.repo# yum update systemd- Riavvia.