timer systemd setiap 8 jam

Sep 08 2020

Saya cukup baru menggunakan timer systemd, dan saya mengalami beberapa masalah.

Saya mencoba menjadwalkan skrip yang berjalan setiap hari, setiap 8 jam, jam 6 pagi, 2 siang, dan 10 malam. Waktu dimulai dengan benar, dan ini menunjukkan waktu yang dijadwalkan berikutnya untuk berjalan (yang memang dilakukannya), tetapi kemudian sepertinya tidak pernah berjalan untuk waktu ke-3 (atau lainnya). Apa yang saya lakukan salah?

Saya memiliki ini di timer saya:

[Unit]
Description=Run every 8 hours
Requires=script.service

[Timer]
OnCalendar=*-*-* 03,11,19:00:00
Persistent=true

[Install]
WantedBy=timers.target

Saya juga sudah mencoba ini:

[Unit]
Description=Run every 8 hours
Requires=script.service

[Timer]
OnCalendar=*-*-* 03,11,19:00:00
OnUnitActiveSec=1d
Persistent=true

[Install]
WantedBy=timers.target

Dan ini:

[Unit]
Description=Run every 8 hours
Requires=script.service

[Timer]
OnCalendar=*-*-* 03:00:00
OnCalendar=*-*-* 11:00:00
OnCalendar=*-*-* 19:00:00
Persistent=true

[Install]
WantedBy=timers.target

Layanan:

[Unit]
Description=Renews Kerberos ticket every 8 hours
After=network-online.target firewalld.service
Wants=network-online.target script.timer

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/bin/kdestroy
ExecStart=/usr/bin/kinit -R -V [email protected] -k -t /etc/krb5.keytab
IOSchedulingClass=best-effort

[Install]
WantedBy=default.target
'''

Jawaban

1 ajgringo619 Sep 08 2020 at 06:49

Oke, saya yakin masalahnya ada pada file script.service . Menurut systemd.timerhalaman manual:

DESCRIPTION
       Note that in case the unit to activate is already active at the time the timer elapses it is not restarted, but simply left running. There is no concept of spawning new service instances in this case. Due to this, services
       with RemainAfterExit= set (which stay around continuously even after the service's main process exited) are usually not suitable for activation via repetitive timers, as they will only be activated once, and then stay
       around forever.

Hapus RemainAfterExit=garis dan Anda harus pergi.