ไม่สามารถเริ่ม Systemd Timer

Sep 11 2020

ฉันมีการกำหนดค่าตัวจับเวลา 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

เมื่อพยายามเริ่มตัวจับเวลาฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

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

ฉันพยายามตรวจสอบการประทับเวลาด้วยsystemd-analyze calendar "Mon..Fri *-*-* 13..23:5,30,45:00"แต่ดูเหมือนว่าเวอร์ชันของฉันจะไม่มีตัวเลือกนี้ มันกลับมาUnknown operation 'calendar'.

เมื่อพยายามบนเซิร์ฟเวอร์อื่นที่มีตัวเลือกปฏิทินดูเหมือนว่าจะเป็นการประทับเวลาที่ถูกต้อง

$ 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

เซิร์ฟเวอร์ที่ใช้งานไม่ได้คือ CentOS 7 และเซิร์ฟเวอร์ที่ใช้งานได้คือ Ubuntu 18.04 Minimal

คำตอบ

1 StephenKitt Sep 12 2020 at 15:24

เวอร์ชันของ systemd ที่มีอยู่ใน CentOS 7 ไม่รองรับช่วงที่กำหนดด้วย... 13..23สามารถแสดงเป็น13/1(ชั่วโมงเริ่มต้นที่ 13 และทุกชั่วโมง) แต่ฉันคิดว่าMon..Friสามารถแสดงเป็นรายการของวันเท่านั้นดังนั้น

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

กลายเป็น

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

ขอบคุณทุกคนที่ตอบ สำหรับผมเลือกที่ดีที่สุดคือการอัปเดต systemd ใช้ย้ายกลับจาก Facebook ที่ผมพบว่าที่นี่ ด้วยวิธีนี้ฉันสามารถใช้ประโยชน์จากคุณสมบัติใหม่ ๆ แทนที่จะใช้วิธีแก้ปัญหา

หลังจากอัปเดตจาก 219 เป็น 231 มันใช้งานได้โดยไม่มีปัญหา คำแนะนำการอัพเดตพื้นฐานที่มีให้ใน repo นั้นมีดังต่อไปนี้:

คำแนะนำในการติดตั้ง

  1. อย่าลืมแก้ไข / etc / selinux / config และกำหนดให้ SELinux อนุญาตก่อนที่จะอัปเดตมิฉะนั้นระบบของคุณจะไม่บูตอีกต่อไป!
  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. รีบูต