Testuję systemowy licznik czasu i próbuję zastąpić jego domyślny limit czasu, ale bez powodzenia. Zastanawiam się, czy istnieje sposób, aby poprosić systemd o informację, kiedy usługa zostanie uruchomiona w następnej kolejności.
Normalny plik ( /lib/systemd/system/snapbackend.timer
):
# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.timer.html
[Unit]
Description=Run the snapbackend service once every 5 minutes.
[Timer]
# You must have an OnBootSec (or OnStartupSec) otherwise it does not auto-start
OnBootSec=5min
OnUnitActiveSec=5min
# The default accuracy is 1 minute. I'm not too sure that either way
# will affect us. I am thinking that since our computers will be
# permanently running, it probably won't be that inaccurate anyway.
# See also:
# http://stackoverflow.com/questions/39176514/is-it-correct-that-systemd-timer-accuracysec-parameter-make-the-ticks-slip
#AccuracySec=1
[Install]
WantedBy=timers.target
# vim: syntax=dosini
Plik zastępowania ( /etc/systemd/system/snapbackend.timer.d/override.conf
):
# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=30min
Uruchomiłem następujące polecenia, a zegar nadal tyka raz na 5 minut. Czy może być błąd w systemd?
sudo systemctl stop snapbackend.timer
sudo systemctl daemon-reload
sudo systemctl start snapbackend.timer
Zastanawiałem się więc, skąd mam wiedzieć, kiedy stoper będzie tykał dalej? Ponieważ to natychmiast powiedziałoby mi, czy to za 5 minut. lub 30 min. ale z tego systemctl status snapbackend.timer
nic nie mówi. Zastanawiam się tylko, czy istnieje polecenie, które powiedziałoby mi o aktualnie używanym opóźnieniu.
Dla zainteresowanych jest też plik usługi ( /lib/systemd/system/snapbackend.service
), choć wyobrażam sobie, że nie powinno to mieć wpływu na tykanie timera ...
# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html
[Unit]
Description=Snap! Websites snapbackend CRON daemon
After=snapbase.service snapcommunicator.service snapfirewall.service snaplock.service snapdbproxy.service
[Service]
# See also the snapbackend.timer file
Type=simple
WorkingDirectory=~
ProtectHome=true
NoNewPrivileges=true
ExecStart=/usr/bin/snapbackend
ExecStop=/usr/bin/snapstop --timeout 300 $MAINPID
User=snapwebsites
Group=snapwebsites
# No auto-restart, we use the timer to start once in a while
# We also want to make systemd think that exit(1) is fine
SuccessExitStatus=1
Nice=5
LimitNPROC=1000
# For developers and administrators to get console output
#StandardOutput=tty
#StandardError=tty
#TTYPath=/dev/console
# Enter a size to get a core dump in case of a crash
#LimitCORE=10G
[Install]
WantedBy=multi-user.target
# vim: syntax=dosini
źródło
systemctl list-timers
pomocy?Odpowiedzi:
Stan aktualnie aktywnych timerów można wyświetlić za pomocą
systemctl list-timers
:źródło
Z komentarza i odpowiedzi @phg znalazłem stronę z odpowiedzią. Liczniki są kumulowane i musisz je najpierw zresetować, w przeciwnym razie poprzedni wpis pozostanie. Jest to przydatne w przypadku kalendarzy, ale działa tak samo ze wszystkimi licznikami czasu.
Posiadanie jednego wpisu, który resetuje timer przed zmianą go na nową wartość, działa zgodnie z oczekiwaniami:
źródło
Nie, nie ma sposobu, aby dokładnie zobaczyć, kiedy licznik czasu uruchomi się w następnej kolejności.
systemd
ofertysystemctl list-timers
isystemctl status something.timer
, ale te nie pokazują wpływuAccuracySec=
i prawdopodobnie innych dyrektyw, które zmieniają czas.Jeśli ustawisz
AccuracySec=1h
na dwóch serwerach, oba będą zgłaszać, że ten sam licznik na obu serwerach uruchomi się dokładnie w tym samym czasie, ale w rzeczywistości mogą zacząć się w odstępie godziny! Jeśli chcesz wiedzieć, czy dwa losowe zegary mogą się zderzyć, wydaje się, że nie ma sposobu, aby sprawdzić ostateczny obliczony czas działania, aby się dowiedzieć.Istnieje otwarty problem systemowy, który sprawia, że wyjście liczników list jest bardziej dokładne / mniej mylące.
źródło
list-timers
, są jednak całkiem dobre, aby zrozumieć, czy użycie timerów jest prawidłowe, czy nie.