timer systemd setiap 15 menit

33

Saya mencoba membuat pengatur waktu systemd yang berjalan setiap 15 menit. Sekarang saya punya:

  • timer-fifteen.timer:

    [Unit]
    Description=15min timer
    
    [Timer]
    OnBootSec=0min
    OnCalendar=*:*:0,15,30,45
    Unit=timer-fifteen.target
    
    [Install]
    WantedBy=basic.target  
    
  • timer-fifteen.target:

    [Unit]
    Description=15min Timer Target
    StopWhenUnneeded=yes
    

Ini berjalan berulang kali tanpa henti. Apakah perlu *:0,15,30,45:*sebaliknya? Bagaimana saya bisa membuat ini berfungsi?

Lily Hahn
sumber
2
Bukankah sintaksis Anda berarti setiap 15 detik ?
Pavel Šimerda

Jawaban:

43

Sintaks Anda diterjemahkan ke setiap 15 detik , jika Anda ingin setiap 15 menit , IMO cara yang paling mudah dibaca adalah:

OnCalendar=*:0/15

Jawaban yang paling mirip dengan apa yang Anda gunakan dalam pertanyaan Anda adalah:

OnCalendar=*:0,15,30,45

Informasi lebih lanjut:

Pavel Šimerda
sumber
3
OnCalendar=0/8:00:00apakah benar mengatakan "jalankan setiap 8 jam"?
shackra
4
Iya nih. Tapi Anda mungkin sudah tahu itu sekarang. :)
Pavel Šimerda
Saya tidak, tapi saya tetap menggunakannya lol. Terima kasih sudah mengkonfirmasi!
shackra
OnCalendar=*:0/15harus menerjemahkan dengan OnCalendar=*:0,15,30,45tepat (mengingat saya membacanya dengan benar di dokumen). Setiap 8 jam akan direalisasikan bersama OnUnitActiveSec=8hours.
Debilski
3
Ketika menentukan suatu interval, output dari systemd-analyzemungkin berguna, misalnya coba systemd-analyze calendar *:0/15.
sebastian
12

Menurut systemd.time , pengaturan

OnCalendar=*:0/15

menerjemahkan tepatnya ke

OnCalendar=*:0,15,30,45

yaitu. itu mengaktifkan unit tepat pada jam penuh, serta pada pukul seperempat, setengah lewat dan seperempat ke.

Tergantung pada layanan Anda, ini mungkin bukan yang Anda inginkan, atau apa yang Anda butuhkan dalam semua kasus.

Timer yang berjalan setiap 15 menit - misalnya pada 1:02, 1:17, 1:32, 1:47, 2:02, ... - selalu tergantung pada waktu dijalankan terakhir - dapat diselesaikan dengan systemd. pengaturan timer

OnUnitActiveSec=15min

Sekarang, Anda juga ingin unit untuk memulai beberapa waktu setelah boot (kecuali jika Anda ingin mengaktifkan unit secara manual atau memiliki ketergantungan yang melakukan itu), jadi Anda mungkin harus menentukan

OnBootSec=10min
OnUnitActiveSec=15min

untuk memiliki unit mulai 10 menit setelah boot dan kemudian setiap 15 menit setelah yang pertama kali.

Selain itu, ada pengaturan OnUnitInactiveSecyang mulai menghitung waktu setelah layanan berhenti (atau, lebih umum, unit telah dinonaktifkan).

Debilski
sumber
1
Peringatan: OnUnitActiveSec tampaknya sangat rusak .
Anders Kaseorg