Page tree
Skip to end of metadata
Go to start of metadata


Zadania cykliczne w systemd - Timers (zamiennik cron)

Konfiguracja uruchamiania skryptów z u?yciem systemd/Timers jest bardziej z?o?ona ni? przy u?yciu cron. systemd/Timers wymaga edycji przynajmniej dwóch plików:

  • definicji serwisu - w nim okre?lamy jaki skrypt/us?uga maj? by? uruchomione;
  • definicji timera - w nim podajemy kiedy ma si? serwis uruchamia?.

Wy?wietl aktywne Timery

Poni?ej wida?, ?e serwis raportuj-df zosta? uruchomiony 17 minut temu przez raportuj-df.timer. Widoczna jest te? data i czas kolejnego wywo?ania tego timera jak i innych zdefiniowanych w systemie:

root@debian8:~# systemctl list-timers
NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES
Fri 2017-02-10 23:25:37 GMT  21h left Thu 2017-02-09 23:25:37 GMT  2h 13min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Sat 2017-02-11 01:21:00 GMT  23h left Fri 2017-02-10 01:21:06 GMT  17min ago    raportuj-df.timer            raportuj-df.service

2 timers listed.
Pass --all to see loaded but inactive timers, too.


W??cz i wy??cz istniej?ce timery

[root@muflon ~]$ systemctl enable xm-backup-vmwiki.timer
Created symlink /etc/systemd/system/multi-user.target.wants/xm-backup-vmwiki.timer ? /etc/systemd/system/xm-backup-vmwiki.timer.


[root@muflon ~]$ systemctl disable xm-backup-vmwiki.timer
Removed /etc/systemd/system/multi-user.target.wants/xm-backup-vmwiki.timer.


Uruchom codziennie skrypt - przyk?ad

Za?ó?my, ?e potrzebujemy co dzie? logowa? ile pozosta?o wolnej przestrzeni na partycji root /

Skrypt /usr/local/sbin/raportuj-df.sh
#!/bin/bash

LOG=/var/log/raport-df.log

/bin/date >> $LOG
/bin/df -h / >> $LOG


Definicje w?asnych unitów dla systemd administrator przygotowuje w katalogu /etc/systemd/system/.

Definicja serwisu /etc/systemd/system/raportuj-df.service
[Unit]
Description=Raportuje do pliku raport-df.log zajetosc partycji root

[Service]
Type=simple
User=root
ExecStart=/usr/local/sbin/raportuj-df.sh
Definicja timera /etc/systemd/system/raportuj-df.timer
[Unit]
Description=Uruchamia co dzie? o 01:21 serwis raportuj-df.service

[Timer]
Unit=raportuj-df.service
OnCalendar=01:21

[Install]
WantedBy=multi-user.target

Powy?szy timer b?dzie o godzinie 01:21 ka?dego dnia uruchamia? serwis raportuj-df.service, ten natomiast uruchamia skrypt raportuj-df.sh.


Po zdefiniowaniu powy?szych wystarczy timer uruchomi? i w??czy?, je?li ma by? brany pod uwag? po restarcie maszyny:

root@debian8:~# systemctl start raportuj-df.timer 
root@debian8:~# systemctl enable raportuj-df.timer 
Created symlink from /etc/systemd/system/multi-user.target.wants/raportuj-df.timer to /etc/systemd/system/raportuj-df.timer.

Je?li po w??czeniu lub uruchomieniu timera lub serwisu edytowa?e? definicje tych unitów (lub dowolnych innych z nimi powi?zanych) nale?y powiadomi? systemd o zmianie - prze?adowa? jego konfiguracj?:

systemctl daemon-reload


Inne ustawienia timerów

OnCalendar - przyk?adowe warto?ci

Za dokumentacj?:

man systemd.time
      The special expressions "hourly", "daily", "monthly", "weekly", and "yearly" or "annually" may be used as calendar
       events which refer to "*-*-* *:00:00", "*-*-* 00:00:00", "*-*-01 00:00:00", "Mon *-*-* 00:00:00", and
       "*-01-01 00:00:00" respectively.

       Examples for valid timestamps and their normalized form:

              Sat,Thu,Mon-Wed,Sat-Sun ? Mon-Thu,Sat,Sun *-*-* 00:00:00
                Mon,Sun 12-*-* 2,1:23 ? Mon,Sun 2012-*-* 01,02:23:00
                              Wed *-1 ? Wed *-*-01 00:00:00
                      Wed-Wed,Wed *-1 ? Wed *-*-01 00:00:00
                           Wed, 17:48 ? Wed *-*-* 17:48:00
           Wed-Sat,Tue 12-10-15 1:2:3 ? Tue-Sat 2012-10-15 01:02:03
                          *-*-7 0:0:0 ? *-*-07 00:00:00
                                10-15 ? *-10-15 00:00:00
                  monday *-12-* 17:00 ? Mon *-12-* 17:00:00
            Mon,Fri *-*-3,1,2 *:30:45 ? Mon,Fri *-*-01,02,03 *:30:45
                 12,14,13,12:20,10,30 ? *-*-* 12,13,14:10,20,30:00
            mon,fri *-1/2-1,3 *:30:45 ? Mon,Fri *-01/2-01,03 *:30:45
                       03-05 08:05:40 ? *-03-05 08:05:40
                             08:05:40 ? *-*-* 08:05:40
                                05:40 ? *-*-* 05:40:00
               Sat,Sun 12-05 08:05:40 ? Sat,Sun *-12-05 08:05:40
                     Sat,Sun 08:05:40 ? Sat,Sun *-*-* 08:05:40
                     2003-03-05 05:40 ? 2003-03-05 05:40:00
                           2003-03-05 ? 2003-03-05 00:00:00
                                03-05 ? *-03-05 00:00:00
                               hourly ? *-*-* *:00:00
                                daily ? *-*-* 00:00:00
                              monthly ? *-*-01 00:00:00
                               weekly ? Mon *-*-* 00:00:00
                               yearly ? *-01-01 00:00:00
                             annually ? *-01-01 00:00:00
                                *:2/3 ? *-*-* *:02/3:00

OnBootSec - wystaruj x sekund po uruchomieniu systemu

Zamiast OnCalendar mo?na u?y? zmiennej OnBootSec w definicji timera, dzi?ki temu mo?na okre?lony serwis uruchomi? dopiero okre?lony czas (w sekundach) po uruchomieniu systemu. Nale?y jednak 

1 Comment

  1. Nie wiem dlaczego, ale ta strona wyświetla się bez polskich znaków. Taguję jako "todo" "fix-pl-chars"


You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.