¿Por qué no se almacenan crontabs en los directorios de inicio de los usuarios?

35

Tengo curiosidad por saber: ¿por qué los crontabs se almacenan en / var en lugar de en los directorios de inicio del usuario? Es muy difícil aislar estos archivos para las actualizaciones, pero sospecho que hay una razón lógica ...

Martin Eve
fuente

Respuestas:

41

Pocas razones se me ocurren:

  • En entornos corporativos, puede tener miles de usuarios. Si es así, cron tendría que escanear a través del directorio de cada usuario cada minuto para verificar el archivo crontab (ya sea que se haya creado, eliminado o modificado).
    Al mantenerlos en una sola ubicación, no tiene que hacer este escaneo intensivo.
  • Los directorios principales pueden no estar siempre disponibles. Si los directorios principales son de montaje automático, es posible que no se monten. Hacer que cron los revise cada minuto hará que se monten y evite que se desmonten debido a la inactividad. Además, si el directorio de inicio está cifrado y descifrado con la contraseña del usuario, cron no podrá acceder al directorio de inicio a menos que el usuario haya iniciado sesión y descifrado / montado.
  • Los directorios principales pueden compartirse entre los hosts. Si el directorio de inicio es un recurso compartido de red, ese mismo directorio de inicio aparecerá en varios hosts. Pero es posible que no desee que sus trabajos cron se ejecuten en cada host, solo uno de ellos.
Patricio
fuente
1
+1 Aunque tradicionalmente cronno volvía a escanear esos archivos cada minuto; los cargó una vez y solo los releyó en una señal.
Ricitos de Oro
77
Pero tienes razón sobre el punto 3; según wikipedia, los crontabs estaban originalmente en $ HOME, hasta que "[los desarrolladores de laboratorio de Bell] incorporaron el Unix en el comando en cron, movieron los archivos crontab fuera de los directorios de inicio de los usuarios (que no eran específicos del host) y en un host común específico directorio de spool ... "También fue cuando crontabse creó el comando que podría haber solucionado el problema de recarga.
Ricitos de Oro
2
@Patrick O cuando un programa usa la utimesllamada del sistema, con la ruta del directorio de spool como argumento, para establecer el tiempo m del directorio, que es lo que hace el crontabcomando de Vixie cron .
Mark Plotnick
2
Las primeras versiones de cron ciertamente no detectaron cambios en los archivos crontab del usuario a menos que fueran editados a través de crontab -e. Esto me ha sorprendido en el pasado en Solaris. Vea esta página de manual de
2
En Solaris 10, crontab -eque es raíz setuid, escribe un mensaje /etc/cron.d/FIFOdespués de que un usuario edita un crontab.
Mark Plotnick