시스템 타이머에 트리거가 없습니다.

시스템 타이머에 트리거가 없습니다.

내 시스템 타이머는 다음과 같이 구성되어 있으며 서비스는 5분마다 실행되어야 합니다.

[Unit]
Description=Sync mail

[Timer]
OnCalendar=*:0/5
Unit=mail.service

[Install]
WantedBy=multi-user.target

그러나 타이머 상태는 다음과 같습니다.

● mail.timer - Sync mail
     Loaded: loaded (/home/phil/.config/systemd/user/mail.timer; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-06-12 09:49:05 CEST; 15min ago
    Trigger: n/a
   Triggers: ● mail.service

Jun 12 09:49:05 arch systemd[396]: Started Sync mail.

한 번만 실행되고 그 이후에는 다시 실행되지 않았습니다. 어떤 제안이 있으십니까? 왜 이런 일이 발생합니까?

답변1

타이머는 Trigger: n/a트리거된 장치가 계속 실행되는 동안 알려줍니다. 이미 실행 중인 서비스를 예약하려고 시도하지 않습니다. 서비스가 중지되면 타이머 트리거가 다음 적절한 시간으로 설정됩니다.

mail.service를 실행하는 데 12분이 걸리는 경우 타이머가 한 번 실행되고 서비스는 12분 동안 실행된 다음 타이머가 3분 후에 실행되도록 예약하므로 두 호출 사이에 15분의 간격이 생깁니다.

그래서 대답은 "인내심을 가져라"이다. 완료되면 mail.service다음 5분 시점에 다시 시작됩니다.


예는 다음과 같습니다.

# mytime.service
[Service]
Type=oneshot
ExecStart=/bin/sleep 10

# mytime.timer
[Timer]
OnCalendar=*:0/1

내가 그렇게 하면 systemctl start mytime.timer우리는 이것을 보게 될 것입니다:

$ systemctl --user status mytime.timer mytime.service
● mytime.timer - Test timer
     Active: active (waiting) since Sat 2021-06-12 10:56:01 CEST; 725ms ago
    Trigger: Sat 2021-06-12 10:57:00 CEST; 59s left

● mytime.service
     Active: inactive (dead)

서비스가 실행되면 다음이 표시됩니다.

$ systemctl --user status mytime.timer mytime.service
● mytime.timer - Test timer
     Active: active (running) since Sat 2021-06-12 10:56:01 CEST; 1min ago
    Trigger: n/a

● mytime.service
     Active: activating (start) since Sat 2021-06-12 10:57:00 CEST; 10ms ago
     CGroup: /user.slice/user-1000.slice/[email protected]/app.slice/mytime.service
             └─11346 /bin/sleep 10

종료 되면 sleep 10트리거가 설정됩니다.

$ systemctl --user status mytime.timer mytime.service
● mytime.timer - Test timer
     Active: active (waiting) since Sat 2021-06-12 10:56:01 CEST; 1min 11s ago
    Trigger: Sat 2021-06-12 10:58:00 CEST; 49s left

● mytime.service
     Active: inactive (dead) since Sat 2021-06-12 10:57:10 CEST; 1s ago
    Process: 11346 ExecStart=/bin/sleep 10 (code=exited, status=0/SUCCESS)

관련 정보