Muszę napisać jednostkę czasową dla maszyny, która jest często wyłączana (np. Klasyczna konfiguracja pulpitu). Ta jednostka czasowa musi być aktywowana regularnie, ale niezbyt często (np. Co tydzień, co miesiąc).
Znalazłem kilka podejść, ale tak naprawdę nie pasują:
Według stron podręcznika man tylko
OnBootSec
iOnStartupSec
dyrektywy zostaną aktywowane, jeśli skonfigurowany punkt czasu jest w przeszłości. Znalazłem również kilka przykładów, używając kombinacji tych z,OnActiveSec
aby zdefiniować regularne wydarzenie. Problem polega na tym: Za każdym razem, gdy urządzenie jest uruchamiane, timer aktywuje skonfigurowane urządzenie. Jeśli masz licznik czasu, który powinien uruchamiać się TYLKO tydzień / miesiąc, to zdecydowanie za często. Na przykład: nie chcę, aby moje dzienniki były obracane trzy razy dziennie ...Rozwiązania z
OnCalendar
dyrektywą. Jeśli maszyna zostanie wyłączona w skonfigurowanym momencie (przeważnie o północy, ponieważ jeśli pominiesz godzinę w specyfikacji czasu, domyślnie będzie to 00:00:00), licznik czasu nie zostanie aktywowany po następnym uruchomieniu. Tak przynajmniej rozumiem. Czy to prawda?
Pojawia się więc pytanie:
czy timer z wydarzeniami w kalendarzu jest aktywowany zaraz po następnym uruchomieniu, jeśli skonfigurowany czas jest w przeszłości?
Jeśli nie: czy istnieje sposób obejścia tego problemu?
Odpowiedzi:
Ta funkcja została już zaimplementowana w systemd (ver> = 212) przy użyciu
Persistent=
dyrektywy, więc wystarczy wstawićPersistent=true
do pliku jednostki podczas korzystania zOnCalendar=
dyrektywy w celu ustalenia daty / godziny uruchomienia zadania.źródło
OnBootSec
iOnActiveSec
.Persistent
należy uruchomić raz podczas rozruchu, jeśli przynajmniej jeden bieg został pominięty z powodu awarii?Zgodnie z tym e-mailem na liście dyskusyjnej systemd-devel pożądane zachowanie znajduje się na mapie drogowej i zostanie dodane w przyszłości.
źródło