Perché i crontab non sono memorizzati nelle home directory degli utenti?


35

Sono curioso di sapere: perché i crontab sono memorizzati in / var anziché nelle home directory dell'utente? È una vera seccatura isolare questi file per gli aggiornamenti, ma sospetto che ci sia una ragione logica ...

Risposte:


41

Poche ragioni a cui riesco a pensare:

  • In ambienti aziendali, puoi avere migliaia di utenti. In tal caso, cron dovrebbe scansionare la directory di ogni singolo utente ogni singolo minuto per verificare il file crontab (se è stato creato, cancellato o modificato).
    Conservandoli in un'unica posizione, non è necessario eseguire questa scansione intensiva.
  • Le home directory potrebbero non essere sempre disponibili. Se le home directory sono un mount autofs, potrebbero non essere montate. Avere cron che li controlla ogni singolo minuto li farebbe montare, e impedirebbe loro di smontare a causa dell'inattività. Inoltre, se la home directory è crittografata e decrittografata con la password dell'utente, cron non sarà in grado di accedere alla home directory se l'utente non ha effettuato l'accesso e decrittografato / montato.
  • Le home directory potrebbero essere condivise tra host. Se la home directory è una condivisione di rete, quella stessa home directory apparirà su più host. Ma potresti non voler eseguire i tuoi lavori cron su ogni singolo host, solo su uno di essi.

1
+1 Sebbene tradizionalmente cronnon esegua nuovamente la scansione di questi file ogni minuto; li ha caricati una volta e li ha riletti solo su un segnale.
Riccioli d'oro,

7
Ma hai ragione sul punto 3; secondo Wikipedia i crontab erano originariamente in $ HOME, fino a quando "[Bell lab devs] ha incorporato Unix al comando in cron, ha spostato i file crontab dalle directory home degli utenti (che non erano specifici dell'host) e in un comune specifico dell'host directory spool ... "Questo è anche quando è crontabstato creato il comando che potrebbe aver risolto il problema di ricarica.
Riccioli d'oro,

2
@Patrick O quando un programma utilizza la utimeschiamata di sistema, con il percorso della directory di spool come argomento, per impostare il mtime della directory, che è ciò che fa il crontabcomando di Vixie cron .
Mark Plotnick,

2
Le prime versioni di cron certamente non rilevavano modifiche ai file crontab dell'utente a meno che non fossero modificate tramite crontab -e. Sono stato catturato da questo in passato su Solaris vedere questo decenni vecchia pagina man manpages.info/sunos/cron.1.html

2
Su Solaris 10, crontab -eche è setuid root, scrive un messaggio /etc/cron.d/FIFOdopo che un utente modifica un crontab.
Mark Plotnick,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.