Mostra la pàginaRevisions anteriorsQuè hi enllaçaExporta a PDFTorna dalt Aquesta pàgina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error. =cron / crontab ==Conceptos básicos Cron se ejecuta en el background, revisa cada minuto la tabla de tareas crontab **/etc/crontab** o en **/var/spool/cron** comprobar si está en ejecución: <code>$ ps -ef | grep crond</code> Añadir el servicio si no lo estuviera: <code>$ chkconfig --level 35 crond on</code> === variables de entorno <code> $ export EDITOR=nano</code> ==Uso sencillo añadir el script a ejecutar en alguno de estos directorios (o un link): * /etc/cron.hourly -> se ejecuta cada hora * /etc/cron.daily -> se ejecuta cada día * /etc/cron.weekly -> se ejecuta cada semana * /etc/cron.monthly -> se ejecuta cada mes ==Uso "elaborado" modificar ''/etc/crontab'' las lineas que realmente ejecutan los "trabajos" son del estilo: <code>* * * * * <usuario> <comando> [ > /dev/null 2>&1 ]</code> * indicar rangos: 1-3 * indicar listas: 1,3,5,7 * indicar fracciones: */15 ==> cada 15 minutos (0,15,30,45), 1-10/2 => los 1,3,5,7,9 (empieza en el 1, a saltos de 2), 2/4 => 2,6,10,14 * En algunas distribuciones, se pueden indicar interrogantes -> asumirá el minuto/hora/dia en el que fue iniciado el cron y a partir de ese momento siempre será ese. * *L* : indica "último" (last) * en el caso del día de la semana, sería el último X del mes * en el caso del día del mes, sería el último día del mes * *W* : día de la semana (weekday) * usado en el día del mes, ejecuta la tarea el día laboral más cercano. * ejemplo: 15W, si el 15 es sábado, lo ejecuta el viernes 14, si es domingo lo ejecuta el lunes 16 * *#* : usar en campo dia de la semana * permite ejecutar un determinado día de la semana de una semana concreta * ejempo: 5#3 ejecutaría el viernes de la tercera semana * *H* : hashed * repite en algún momento indeterminado, pero invariable a partir de entonces * [[https://en.wikipedia.org/wiki/Cron#Format]] <code> ------------- minutos (0 - 59) | ----------- horas (0 - 23) | | --------- dia del mes (1 - 31) | | | ------- mes (1 - 12) | | | | ----- dia de la semana (0 - 6) (domingo=0, lunes=1, ... sabado=6) | | | | | * * * * * comando a ejecutar * significa todos los valores validos / permite definir una repeticion - permite definir un rango , permite definir varios valores </code> otros formatos (special strings): * @reboot -> Run once, at startup. * @yearly -> Run once a year, "0 0 1 1 *". * @annually -> (same as @yearly) * @monthly -> Run once a month, "0 0 1 * *". * @weekly -> Run once a week, "0 0 * * 0". * @daily -> Run once a day, "0 0 * * *". * @midnight -> (same as @daily) * @hourly -> Run once an hour, "0 * * * *". ==personalizado con los siguientes comandos podemos gestionar nuestros propios trabajos CRON (individual para cada usuario): <code> $ crontab <fichero> : añade el fichero con formato cron $ crontab -e : edita el fichero $ crontab -l : lista los trabajos añadidos a nuestros fichero $ crontab -r : elimina los crontab </code> No sirve modificar el fichero original, hay que añadirlo cuando toque. El formato del crontab es ligeramente diferente, no se ha de especificar el usuario. permite una linea del tipo ''MAILTO="direccion@correoelectronico.es"'' El fichero se guarda, a buen recaudo, en ''/var/spool/cron/crontabs'' (en una debian, al menos) == ejemplos * ejecuta el trabajo a las 00:00, 06:00, 12:00, 18:00 <code bash> 0 0,6,12,18 * * * /comando </code> * ejecuta el trabajo a las 00:00, 06:00, 12:00, 18:00 pero solo los días laborables: <code bash> 0 0,6,12,18 * * 1-5 /comando </code> * ejecuta el trabajo a las 00:00, 06:00, de 9:00 a 15:00 cada hora, 18:00 pero solo los días laborables: <code bash> 0 0,6,9-15,18 * * 1-5 /comando </code> * ejecuta el trabajo cada 6 horas (basicamente, cuando la división da 0 de resto) a la hora en punto (el 0 de los minutos): <code bash> 0 */6 * * * /comando </code> * ejecuta el trabajo cada 5 minutos: <code bash> */5 * * * * /comando </code> * ejecuta el trabajo todos los días pares a las 12:00: <code bash> 0 12 */2 * * /comando </code> ==seguridad se puede controlar quien usa y quien no el servicio CRON en los archivos: <code> /etc/cron.allow /etc/cron.deny </code> en estos ficheros se añade la lista de usuarios con o sin permisos. Se puede utilizar ALL en cualquiera de los 2 Si no se crea el cron.deny y si el cron.allow, es como si hubiesemos creado un cron.deny con un ALL y tendremos que añadir a todos los usuarios que tengan que utilizar este servicio en el cron.allow == más info * [[https://help.ubuntu.com/community/CronHowto]] * [[https://www.freebsd.org/cgi/man.cgi?crontab%285%29]] * [[https://blog.desdelinux.net/cron-crontab-explicados/]] linux/cron/cron.txt Darrera modificació: 22/07/2021 04:00per mate