Dlaczego crontabs nie są przechowywane w domowych katalogach użytkowników?


35

Ciekawe, dlaczego: dlaczego crontabs są przechowywane w katalogu / var, a nie w katalogach domowych użytkownika? Izolowanie tych plików w celu aktualizacji jest bardzo trudne, ale podejrzewam, że istnieje logiczny powód ...

Odpowiedzi:


41

Kilka powodów, o których mogę myśleć:

  • W środowiskach korporacyjnych możesz mieć tysiące użytkowników. Jeśli tak, cron musiałby skanować katalog każdego użytkownika co minutę, aby sprawdzić plik crontab (czy został utworzony, usunięty lub zmodyfikowany).
    Utrzymując je w jednym miejscu, nie trzeba wykonywać tego intensywnego skanowania.
  • Katalogi domowe mogą nie zawsze być dostępne. Jeśli katalogi domowe są montowane automatycznie, mogą nie być montowane. Sprawdzanie ich przez crona co minutę spowoduje ich zamontowanie i zapobiegnie odmontowaniu z powodu braku aktywności. Również, jeśli katalog domowy jest zaszyfrowany i odszyfrowany hasłem użytkownika, cron nie będzie mógł uzyskać dostępu do katalogu domowego, chyba że użytkownik zaloguje się i go odszyfruje / zamontuje.
  • Katalogi domowe mogą być współużytkowane przez hosty. Jeśli katalog domowy to udział sieciowy, ten sam katalog domowy pojawi się na wielu hostach. Ale możesz nie chcieć, aby zadania cron działały na każdym hoście, tylko jednym z nich.

1
+1 Chociaż tradycyjnie cronnie skanowano tych plików co minutę; załadował je tylko raz i ponownie odczytał na sygnał.
goldilocks

7
Ale masz rację co do punktu 3; według Wikipedii crontabs były pierwotnie w $ HOME, dopóki „[Bell lab devs] włączył komendę Unix do crona, przeniósł pliki crontab z katalogów domowych użytkowników (które nie były specyficzne dla hosta) i do wspólnej specyficznej dla hosta katalog buforowania ... ”Wtedy też powstało crontabpolecenie, które mogło rozwiązać problem z przeładowaniem.
goldilocks

2
@Patrick Lub gdy program używa utimeswywołania systemowego, którego argumentem jest ścieżka katalogu buforowania, aby ustawić mtime katalogu, co crontabrobi polecenie Vixie cron .
Mark Plotnick

2
Wczesne wersje crona z pewnością nie pobierały zmian w plikach crontab użytkownika, chyba że były edytowane przez crontab -e. Zostałem złapany przez to w przeszłości w systemie Solaris zobaczyć ten dekad strona człowiek manpages.info/sunos/cron.1.html

2
W crontab -esystemie Solaris 10, który jest setuid root, zapisuje komunikat, /etc/cron.d/FIFOgdy użytkownik edytuje plik crontab.
Mark Plotnick
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.