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
OnBootSec
danOnStartupSec
arahan akan diaktifkan jika titik waktu yang dikonfigurasi di masa lalu. Saya juga menemukan beberapa contoh menggunakan kombinasi dari ini denganOnActiveSec
untuk 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
OnCalendar
arahan. 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?
Jawaban:
Fitur ini telah diterapkan di systemd (ver> = 212) menggunakan
Persistent=
arahan sehingga Anda hanya perlu memasukkanPersistent=true
file unit saat menggunakanOnCalendar=
arahan untuk menetapkan tanggal / waktu untuk menjalankan pekerjaan.sumber
OnBootSec
danOnActiveSec
.Persistent
adalah menjalankan sekali pada saat boot jika setidaknya satu kali dijalankan terlewatkan karena turun?Menurut email ini pada mailing list systemd-devel, perilaku yang diinginkan ada di peta jalan dan akan ditambahkan di masa depan.
sumber