Planowanie zadań to funkcjonalność, która pozwala użytkownikom systemu na wykonywanie określonych komend, zadań czy skryptów o zadanym, wybranym czasie w przyszłości. Wykonanie takiego zaplanowanego zadania może odbyć się tylko jeden raz ww przyszłości lub co pewien czas, okresowo o zadanej porze. Jednorazowe wykonywanie określonych zadań o zadanej porze w przyszłości dotyczy na ogół zadań, które do swojego wykonania potrzebują dużo zasobów komputera i w związku z tym wymagają małego obciążenia systemu. Z kolei zadania, które wykonywane są okresowo to wykonywanie kopii zapasowych, przycinanie logów, monitorowanie systemu czy usuwanie niechcianych pików z systemu.
Wykonywanie zaplanowanych zadań może być realizowane przez dwa demony: atd i crond. Atd służy do wykonywania zadań tylko jeden raz w przyszłości, crond wykonuje zadania okresowo o określonym przez użytkownika czasie. W czasie startu crond czyta pliki umieszczone w katalogu /var/spool/cron i /etc/cron.d i wczytuje je do pamięci aby móc później wykonać zadania określone w tych plikach. Demon ten skanuje pliki konfiguracyjne co pewien czas i aktualizuje zadania do wykonania, nie wraca jednak do pominiętych zadań. Atd w przeciwieństwie do crond jeżeli przegapi zadanie to wykonuje je następnego dnia o tej samej porze.
Kontrola dostępu.
Domyślnie wszyscy użytkownicy mogą korzystać z atd i crond, można jednak to kontrolować umieszczając określonych użytkowników w odpowiednich plikach w katalogu /etc. Atd używa plików at.allow i at.deny, crond używa plików cron.allow i cron.deny. Składnia plików jest identyczna, musimy tylko umieścić nazwy użytkowników w wybranych plikach, w każdej linii pliku jedna nazwa użytkownika. Root zawsze może korzystać z demonów, o których mowa, nie ważne czy jest umieszczony w tych plikach. Domyślnie plik deny jest założony w systemie i jest pusty, plik allow nie jest założony. Oznacza to pełen dostęp do korzystania z obu narzędzi. Tabela poniższa przedstawia różne kombinacje plików allow i deny i ich wpływ na dostęp do korzystania z narzędzi planowania zadań.
at.allow / cron.allow | at.deny / cron.deny | Znaczenie |
Założony i zawiera wpisy | Obecność pliku nie ma znaczenia | Wszyscy użytkownicy umieszczeni w pliku allow mogą korzystać z narzędzi planowania zadań |
Założony ale jest pusty | Obecność pliku nie ma znaczenia | Żaden użytkownik poza root nie może korzystać z narzędzi |
Brak pliku | Założony i zawiera wpisy | Wszyscy użytkownicy inni niż umieszczeni w pliku deny mogą korzystać z narzędzi planowania zadań |
Brak pliku | Założony ale jest pusty | Wszyscy użytkownicy mogą korzystać z narzędzi planowania zadań |
Brak pliku | Brak pliku | Żaden użytkownik poza root nie może korzystać z narzędzi |
Jeżeli jakiś użytkownik nie jest uprawniony do korzystania z at pojawia się komunikat:
You do not have permission to use at.
Jeżeli np. użytkownik user1 nie jest uprawniony do korzystania z cron pojawia się komunikat:
You (user1) are not allowed to use this program (crontab)
See crontab(1) for more information
W obu przykładowych przypadkach umieszczone został użytkownik user1 w plikach at.deny i cron.deny.
Plik log.
Wszystkie czynności wykonywane przez atd i crond logowane są w pliku /var/log/cron. W logu umieszczane są takie informacje jak aktywność, nazwa hosta, właściciel, PID i komunikat. W pliku znajdują się także informacje o uruchomieniu czy wyłączeniu demona crond.
# cat /var/log/cron
Apr 2 03:43:01 centos run-parts(/etc/cron.daily)[11448]: finished logrotate
Apr 2 03:43:01 centos run-parts(/etc/cron.daily)[11426]: starting man-db.cron
Apr 2 03:43:12 centos run-parts(/etc/cron.daily)[11459]: finished man-db.cron
Apr 2 03:43:12 centos run-parts(/etc/cron.daily)[11426]: starting mlocate
Apr 2 03:43:13 centos run-parts(/etc/cron.daily)[11470]: finished mlocate
Apr 2 03:43:13 centos anacron[11062]: Job `cron.daily' terminated
Apr 2 03:43:13 centos anacron[11062]: Normal exit (1 job run)
Apr 2 03:50:01 centos CROND[11530]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 2 04:00:01 centos CROND[11616]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr 2 04:01:01 centos CROND[11629]: (root) CMD (run-parts /etc/cron.hourly)