2010-10-20 20 views
31

W jaki sposób "nowoczesne" cron daemons wewnętrznie zaplanować swoje oferty pracy? Niektóre crond s są używane do planowania przebiegu co jakiś czas poprzez at. Więc po crontab jest rozpisane, robi crond:W jaki sposób program cron wewnętrznie planuje zadania?

  1. Analizować crontab dla wszystkich przyszłych zdarzeń i spać na przerwach?
  2. Sondować zagregowaną bazę danych crontab co minutę, aby określić, czy aktualny czas odpowiada rozkładowi harmonogramu?
  3. Inne?

Dzięki

Odpowiedz

44

Kilka świerszcze słyszane w tej kwestii. Good „ol RTFC z niektórych odrębnych dokumentach symulacji zdarzeń i Wikipedia:

http://en.wikipedia.org/wiki/Cron#Multi-user_capability

Algorytm używany przez tego cron jest następująco:

  1. Na rozruchu, poszukaj pliku o nazwie .crontab w katalogach domowych wszystkich właścicieli kont.
  2. Dla każdego odnalezionego pliku crontab należy ustalić, następnym razem w przyszłości , czy każde polecenie ma zostać uruchomione.
  3. Umieść te polecenia na liście zdarzeń Franta-Maly z ich odpowiednim czasem i odpowiadającym im czasem "pięć ".
  4. Wprowadź główną pętlę:
    1. zadanie zbadać wpis na czele kolejki, obliczyć, jak daleko w przyszłość należy uruchomić.
    2. Spać przez ten czas.
    3. Po przebudzeniu i po sprawdzeniu właściwego czasu, wykonaj zadanie pod numerem szefa kolejki (w tle) z uprawnieniami użytkownika, który stworzył go .
    4. Ustal następnym razem w przyszłości do uruchomienia tej komendy i umieść ją na liście zdarzeń w tym czasie
+1

podstawie 'man' strony dla' cron', to wygląda jakby budził się co minutę, aby sprawdzić, czy powinien uruchomić zadanie: "cron następnie budzi się co minutę, sprawdzając wszystkie przechowywane pliki crontab, sprawdzając każde polecenie, czy powinien być uruchomiony w bieżącej minucie." To jest z Vixie Cron, który został zainstalowany na Debianie (napisany przez Paula Vixie). Myślę, że algorytm, który opisałeś, był używany, gdy budzenie się co minutę było zbyt kosztowne. – Paul

+1

Oto strona man: http://www.unix.com/man-page/debian/8/cron/ – Paul

+0

Chciałabym móc znaleźć opis listy wydarzeń w internecie. Czy to jest wspólna struktura danych? –

Powiązane problemy