¿Cómo es que crontab -e es diferente de less / etc / crontab?

11

Soy bastante nuevo en Unix y crons, actualmente estaba a punto de intentar agregar crons a un archivo cron existente. Leí que podrías hacer esto con crontab -e. Lo confuso para mí es solo que crontab -emuestra diferentes crons / comandos que less /etc/crontab, ¿cómo es que? ¿Cuál es la forma / archivo correcto para editar?

Alex
fuente

Respuestas:

14

Aunque la respuesta de @X Tian contiene información sobre los diferentes archivos para crontab, la información esencial sobre su pregunta es esta:

crontab -eedita el archivo crontab del usuario (almacenado en el /var/spool/cron/crontabs/directorio en los sistemas Debian actuales, pero YMMV) o crea uno nuevo, y no /etc/crontab. Similar para crontab -l(listar el archivo crontab) y crontab -r(eliminar el archivo crontab).

Para todos los trabajos cron que deben ejecutarse bajo la cuenta de un usuario, debe usar crontab -e. Para los trabajos del sistema, debe agregar un archivo debajo /etc/cron.d, si existe; debajo /etc/cron.{hourly|daily|weekly|monthly}(¡pero no se debe nombrar como un nombre de paquete!), si eso se ajusta a su propósito; o agregue una línea a /etc/crontab. Pero tenga en cuenta que /etc/crontabpodría sobrescribirse con una actualización del sistema.

Dubu
fuente
@Stephane Chazelas Gracias por aclarar con tu edición. El /var/spool/cron/directorio es una especialidad de Linux (consulte el Estándar de jerarquía de archivos ) y la ubicación puede variar en sistemas que no sean Debian actuales.
Dubu
3

Realmente quieres leer las páginas del manual man cronyman crontab

Aquí hay un extracto que cubre su pregunta. Deman cron

NOTAS cron busca en su área de spool (/ var / spool / cron / crontabs) archivos crontab (que llevan el nombre de las cuentas en / etc / passwd); los crontabs encontrados se cargan en la memoria. Tenga en cuenta que no se debe acceder directamente a los crontabs en este directorio: se debe usar el comando crontab para acceder a ellos y actualizarlos.

   cron also reads /etc/crontab, which is in a slightly  different  format
   (see  crontab(5)).   Additionally, cron reads the files in /etc/cron.d:
   it treats  the  files  in  /etc/cron.d  as  in  the  same  way  as  the
   /etc/crontab  file  (they  follow the special format of that file, i.e.
   they  include  the  user  field).  However,  they  are  independent  of
   /etc/crontab:  they  do  not, for example, inherit environment variable
   settings from it. The intended purpose of  this  feature  is  to  allow
   packages  that  require  finer  control  of  their  scheduling than the
   /etc/cron.{daily,weekly,monthly} directories to add a crontab  file  to
   /etc/cron.d. Such files should be named after the package that supplies
   them. Files must conform to the same naming convention as used by  run-
   parts(8):  they  must  consist solely of upper- and lower-case letters,
   digits, underscores, and hyphens. If the -l option is  specified,  then
   they must conform to the LSB namespace specification, exactly as in the
   --lsbsysinit option in run-parts.
X Tian
fuente
1
Debe especificar qué implementación de cron y qué versión de la misma en qué sistema operativo y de qué versión está citando. crones algo que varía mucho de un sistema operativo a otro y en algunos puedes elegir entre varias implementaciones.
Stéphane Chazelas