Tidak Dapat Memulai Timer Systemd

Sep 11 2020

Saya memiliki konfigurasi timer systemd berikut

[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

Ketika mencoba untuk memulai pengatur waktu saya menerima pesan galat berikut:

Failed to parse calendar specification, ignoring: Mon..Fri *-*-* 13..23...5,30,45:00 service-timer.timer lacks value setting. Refusing.

Saya mencoba memeriksa stempel waktu dengan systemd-analyze calendar "Mon..Fri *-*-* 13..23:5,30,45:00"tetapi versi saya tampaknya tidak memiliki opsi ini. Ia kembaliUnknown operation 'calendar'.

Saat mencoba di server lain di mana opsi kalender tersedia, tampaknya itu adalah stempel waktu yang valid.

$ 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

Server tempat ia tidak berfungsi adalah CentOS 7 dan server tempat ia bekerja adalah Ubuntu 18.04 Minimal.

Jawaban

1 StephenKitt Sep 12 2020 at 15:24

Versi systemd yang tersedia di CentOS 7 tidak mendukung rentang yang ditentukan dengan ... 13..23dapat dinyatakan sebagai 13/1(jam mulai dari 13 dan kemudian setiap jam), tetapi saya pikir Mon..Frihanya dapat dinyatakan sebagai daftar hari, jadi

OnCalendar=Mon..Fri *-*-* 13..23:0,15,30,45:00

menjadi

OnCalendar=Mon,Tue,Wed,Thu,Fri *-*-* 13/1:0,15,30,45:00
MosesWynn Sep 17 2020 at 03:04

Terima kasih untuk semua yang menjawab. Bagi saya, opsi terbaik adalah memperbarui systemd menggunakan backport dari Facebook yang saya temukan di sini . Dengan cara ini saya dapat memanfaatkan fitur yang lebih baru daripada menggunakan solusi.

Setelah memperbarui dari 219 menjadi 231 itu bekerja tanpa masalah. Instruksi pembaruan dasar yang disediakan dalam repo itu adalah sebagai berikut:

instruksi instalasi

  1. Pastikan untuk mengedit / etc / selinux / config dan membuat SELinux menjadi permisif sebelum Anda memperbarui, jika tidak sistem Anda tidak akan bisa boot lagi!
  2. # 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
  3. # yum update systemd
  4. Mulai ulang.