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

CentOS 7에서 사용할 수있는 systemd 버전은 ... 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

답변 해주신 모든 분들께 감사드립니다. 저에게 가장 좋은 방법은 여기 에서 찾은 Facebook의 백 포트를 사용하여 systemd를 업데이트하는 것 입니다. 이렇게하면 해결 방법을 사용하는 대신 최신 기능을 활용할 수 있습니다.

219에서 231로 업데이트 한 후 문제없이 작동했습니다. 해당 저장소에서 제공되는 기본 업데이트 지침은 다음과 같습니다.

설치 지침

  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. 재부팅하십시오.