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?
Jawaban:
Sintaks Anda diterjemahkan ke setiap 15 detik , jika Anda ingin setiap 15 menit , IMO cara yang paling mudah dibaca adalah:
Jawaban yang paling mirip dengan apa yang Anda gunakan dalam pertanyaan Anda adalah:
Informasi lebih lanjut:
sumber
OnCalendar=0/8:00:00
apakah benar mengatakan "jalankan setiap 8 jam"?OnCalendar=*:0/15
harus menerjemahkan denganOnCalendar=*:0,15,30,45
tepat (mengingat saya membacanya dengan benar di dokumen). Setiap 8 jam akan direalisasikan bersamaOnUnitActiveSec=8hours
.systemd-analyze
mungkin berguna, misalnya cobasystemd-analyze calendar *:0/15
.Menurut systemd.time , pengaturan
menerjemahkan tepatnya ke
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
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
untuk memiliki unit mulai 10 menit setelah boot dan kemudian setiap 15 menit setelah yang pertama kali.
Selain itu, ada pengaturan
OnUnitInactiveSec
yang mulai menghitung waktu setelah layanan berhenti (atau, lebih umum, unit telah dinonaktifkan).sumber
OnUnitActiveSec
tampaknya sangat rusak .