Estoy configurando tareas regulares de mantenimiento del sistema que deben ejecutarse como root. Planeo usar el sabor de cron que viene con Ubuntu 14.04 LTS como predeterminado.
Veo que el administrador anterior (que desde entonces dejó la compañía) editó / etc / crontab directamente. Sin embargo, entiendo que otro enfoque posible sería usarlo crontab -e
como root. ¿Hay argumentos convincentes para usar uno u otro, o se debe a la preferencia?
linux
cron
ubuntu-14.04
marcv81
fuente
fuente
Respuestas:
Puede ser útil tener en cuenta que los trabajos en un crontab personal (
crontab -e
) siempre se ejecutan como su propietario, donde/etc/crontab
contiene un<user>
campo obligatorio adicional que permite a un administrador configurar el trabajo para que se ejecute como un usuario no root.Editar el crontab del sistema o configurar un crontab personal para root es probablemente un poco más portátil, no específico para ciertas distribuciones de Linux y posiblemente más conveniente para una persona , con todos los trabajos en un solo archivo pero:
Personalmente, prefiero una tercera opción : para cada tarea programada, descartar
/etc/cron.d/
con un fragmento de cron/etc/cron.[hourly |daily |weekly |monthly]
directorio correspondiente .Eso es más fácil de escribir (simplemente puede crear / sobrescribir / eliminar dichos archivos y no tiene que perder el tiempo en el contenido de un solo archivo crontab) y eso funciona bien con las herramientas de administración de configuración y eso es lo que los administradores de paquetes ya son haciendo de todos modos.
Los trabajos / scripts en
/etc/cron.[hourly |daily |weekly |monthly]
siempre se ejecutan como root, donde los fragmentos de cron/etc/cron.d/
permiten tanto establecer una programación personalizada como ejecutarse como un usuario diferente con el mismo<user>
campo obligatorio encontrado/etc/crontab
.fuente
/etc/crontab
es que se requerirá una fusión cada vez que actualice elcron
paquete. No tiene ese problema si solo agrega un nuevo archivo a uno de los/etc/cron.*
directorios./etc/cron.[hourly |daily |weekly |monthly]
contiene ejecutables mientras/etc/cron.d
contiene crontabs. Aparte de eso, +1.Lo mejor que recuerdo es que
crontab -e
tiene la ventaja adicional de que verifica la sintaxis de crontab antes de instalarlo, y fallará y restaurará la anterior si comete un error. De esta manera, todo lo que funcionaba anteriormente no se detendrá repentinamente si la sintaxis es incorrecta. Creo que la mejor práctica es usar las utilidades, como ejecutar envisudo
lugar de editar/etc/sudoers
directamente.fuente
/etc/crontab
línea con un nombre de usuario en la sexta columna). - Aunque me gustaría argumentar que el uso de herramientas interactivas no es la "mejor práctica" , debe automatizar con herramientas como Puppet / Salt / Ansible, etc., y no debe configurar los servidores a mano en primer lugar. Por otro lado, si usted es de la vieja escuela, entonces sí use sus herramientas.Es realmente una pregunta de estilo, hay una razón por la cual el sistema operativo ofrece varios métodos. Solo sea consistente y no mezcle y combine si no desea confundir a nadie más (o a usted mismo después de un tiempo de no tratar con el sistema); si es difícil ver qué tareas están realmente programadas en todo el host, tiende a para terminar en desagradables sorpresas.
fuente
Para asegurarme de agregar un trabajo cron que requiera los derechos de un usuario específico, personalmente uso el siguiente comando:
Puedes agregar
sudo
también.Como dijo @rackandboneman, no hay necesidad de meterse con los archivos /etc/cron.d/. Si se trata de trabajos cron del usuario, use las funciones de
crontab
comando.fuente