Múltiples crontabs para un usuario

13

¿Hay alguna manera de usar múltiples archivos crontab para un usuario? Pensando en algo similar al archivo crontab por proyecto en lugar de crontab por usuario ...

Cualquier ayuda es apreciada ...

sombra real
fuente

Respuestas:

13

En general, es una buena idea mantener su crontab en un archivo separado de todos modos e instalarlo con crontab filename. (Mantengo mi archivo crontab en un sistema de control de código fuente).

Puede tener múltiples archivos crontab e instalarlos todos con

cat file1 file2 file3 | crontab

El crontabcomando normalmente solo administra un crontab único por usuario. Pero puede agregar archivos crontab del sistema al /etc/cron.ddirectorio. Estos archivos tienen un campo adicional después de la especificación de tiempo que indica el usuario para el trabajo, y puede tener varios archivos por usuario. Incluso si uno de ellos tiene un error de sintaxis, los demás seguirán ejecutándose.

Necesitará acceso root para instalar archivos en ese directorio.

man 5 crontab para detalles.

No estoy convencido de que eludir el mecanismo crontab normal como este sea una buena idea, pero debería funcionar.

(Esto supone la implementación de "Vixie Cron", que probablemente es lo que usa su sistema).

NOTA: es posible que sienta la tentación de probar

crontab file1 file2 file3 # WRONG

pero un experimento rápido muestra que todos los nombres de archivo, excepto el primero, se ignoran en silencio. La página de manual dice que se acepta un solo nombre de archivo, pero no dice qué sucede si se proporcionan varios nombres de archivo.

Keith Thompson
fuente
Lo hice hoy. Eso sería fácil de hacer, pero el objetivo con esto es que cada "gerente" del proyecto tenga control sobre su propio crontab. Con ese enfoque tendría que ser combinada como que cada vez que alguien cambia uno de los archivos, que significa que tendrán que hacer un seguimiento de todos los archivos que se deben compilar
1
Entonces cree un programa (o script, o lo que sea) para automatizarlo. Tenga en cuenta que puede invocar el crontabcomando desde una entrada crontab.
Keith Thompson
1
@MateuszKonieczny: Esa es una buena razón, pero también es fácil borrar tu crontab accidentalmente. crontabsin argumentos lee un nuevo crontab de stdin.
Keith Thompson
1
@MateuszKonieczny: No, solo lo guardo en un repositorio CVS y lo copio $HOMEcuando lo actualizo. (Uso CVS porque Git no existía cuando comencé a hacer esto.)
Keith Thompson
1
@KeithThompson ¡Oh, te tengo! Estoy creando un documento para ayudar a las personas a ejecutar Fedora Core 24 desde cero sin evolución o gnomo: github.com/barrycarter/bcapps/blob/master/FEDORA y quería compartir parte de mi archivo cron pero no todo. Su solución (crear bc-public-cron en el directorio GIT y bc-private-cron fuera de él) se ajusta perfectamente.
barrycarter
4

¿Por qué harías eso? Podrías usar varias líneas en crontab, creo que eso también haría el trabajo.

También existen los directorios que probablemente podría usar:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
Garfio
fuente
Así es ahora :) Me gustaría saber si hay una manera de hacer esto