systemd - Unit Timer yang meniru perilaku anacron

13

Saya perlu menulis unit pengatur waktu untuk mesin yang sering dihidupkan (mis. Pengaturan desktop klasik). Unit pengatur waktu ini perlu diaktifkan secara rutin tetapi tidak terlalu sering (mis. Mingguan, bulanan).

Saya memang menemukan beberapa pendekatan tetapi mereka semua tidak benar-benar cocok:

  • Menurut halaman manual hanya OnBootSecdan OnStartupSecarahan akan diaktifkan jika titik waktu yang dikonfigurasi di masa lalu. Saya juga menemukan beberapa contoh menggunakan kombinasi dari ini dengan OnActiveSecuntuk mendefinisikan acara reguler. Masalahnya adalah: Setiap kali mesin boot, timer akan mengaktifkan unit yang dikonfigurasi. Jika Anda punya timer yang harus berjalan SEKALI seminggu / bulan itu terlalu sering. Sebagai contoh: Saya tidak ingin rot saya diputar tiga kali sehari ...

  • Solusi dengan OnCalendararahan. Jika mesin dimatikan pada titik waktu yang dikonfigurasikan (sebagian besar tengah malam karena jika Anda menghilangkan jam dalam spesifikasi waktu, maka defaultnya adalah 00:00:00) timer tidak akan diaktifkan setelah boot berikutnya. Setidaknya begitulah cara saya mendapatkannya. Apakah itu benar ?

Jadi inilah pertanyaannya:
Apakah penghitung waktu dengan acara kalender diaktifkan tepat setelah startup berikutnya jika waktu yang dikonfigurasi sudah lewat?
Jika tidak: Apakah ada solusi untuk mendapatkan perilaku seperti itu?

mmh
sumber
Oke, saya sadar akan hal ini . Apakah masih jalan yang harus ditempuh? Atau ada solusi yang lebih elegan? Adakah sesuatu yang direncanakan untuk memperbaiki situasi saat ini?
mmh

Jawaban:

15

Fitur ini telah diterapkan di systemd (ver> = 212) menggunakan Persistent=arahan sehingga Anda hanya perlu memasukkan Persistent=truefile unit saat menggunakan OnCalendar=arahan untuk menetapkan tanggal / waktu untuk menjalankan pekerjaan.

Gigih =

Membawa argumen boolean. Jika benar, waktu ketika unit layanan dipicu terakhir disimpan pada disk. Ketika timer diaktifkan, unit layanan segera dipicu jika akan dipicu setidaknya sekali selama waktu ketika timer tidak aktif. Ini berguna untuk mengejar ketinggalan dari layanan yang terlewat saat mesin mati. Perhatikan bahwa pengaturan ini hanya berpengaruh pada timer yang dikonfigurasi dengan OnCalendar =.

Pedro
sumber
Bukankah sebaliknya? OP bertanya tentang menghilangkan jalan ekstra yang dihasilkan dari memiliki keduanya OnBootSecdan OnActiveSec. Persistentadalah menjalankan sekali pada saat boot jika setidaknya satu kali dijalankan terlewatkan karena turun?
x-yuri
Nah, Anda mungkin bersungguh-sungguh seperti ini .
x-yuri
0

Menurut email ini pada mailing list systemd-devel, perilaku yang diinginkan ada di peta jalan dan akan ditambahkan di masa depan.

mmh
sumber