
Supongamos que estoy creando dos archivos crontab.
/tmp/my-crontab
/root/my-alternate-crontab
Cada archivo crontab está programado para ejecutar diferentes scripts.
Cuando inicio el cronjob, el primero se reemplaza por el anterior.
crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
¿Es posible lo anterior para un solo usuario?
Respuesta1
Dos formas de evitar tener un único crontab.
Coloque sus entradas de crontab en archivos en algún directorio, como ~/crontab.d/thisandthat.cron
, luego confirme cualquier cambio en el crontab del sistema con:
cat ~/crontab.d/*.cron | crontab -
La extensión .cron
sirve para evitar incluir accidentalmente archivos de copia de seguridad de los editores. Tenga en cuenta que, dado que todos los archivos están concatenados, cualquier variable establecida en los archivos también se aplicará a los archivos que vengan después.
También podrías hacer algo similar a cómo /etc/cron.hourly
se implementan y amigos en Debian. El principal /etc/crontab
contiene reglas como esta:
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Puede disponer que una sola entrada de crontab ejecute varios programas. Debian run-parts dir
es similar for f in dir/* ; do "$f" ; done
excepto que omite nombres de archivos impares, nuevamente para evitar ejecutar archivos de respaldo creados por editores, etc.
Respuesta2
No. Cada usuario tiene un crontab. ¿Por qué? Porque el crontab es la "tabla" ("pestaña") de todos los trabajos cron asociados con un solo usuario.
Si desea ejecutar varias cosas con cron
, simplemente agregue varias líneas en su crontab.
Si tiene varios archivos con especificaciones de trabajo cron, simplemente concatenelos:
cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab
Respuesta3
Puede simplemente leer la entrada real y agregar la nueva inmediatamente después.
Una vez que tengas este ejecutándose:
crontab -u smarak /tmp/my-crontab
Lo ideal sería hacer algo como:
crontab -u smarak <(cat /root/mi-crontab-alternativo) <(crontab -l)
Pero parece que crontab no acepta el formulario anterior, así que aquí tienes la solución:
cat /root/my-alternate-crontab <(crontab -l)| crontab -u smarak -
Esto funciona para mí. Espero que ayude.