====== CRONTAB / CROND ====== Digamos que el cron se compone básicamente de dos "partes" el daemon y el fichero de configuración. El daemon se llama ''**crond**'' y es el encargado de leer el fichero de configuración ''**/etc/crontab**''. Lo hace cada 60 segundos, en busca de cambios en dicho fichero e incorporar así tareas al sistema. ===== Comandos ===== usage: crontab [-u user] file crontab [-u user] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) Para editar la lista de tareas correspondiente al usuario activo: crontab -e Ver la lista de tareas asignadas al usuario activo: crontab -l Eliminar la lista de tareas para el usuario activo: crontab -r ===== /etc/crontab ===== Editado dicho archivo encontraremos algo parecido a esto: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly El primer campo, **''SHELL''**, es el entorno donde se ejecutarán las órdenes, por defecto suele venir **''bash''**, a menos que prefieran/usen otra shell. El segundo es **''PATH''**, allí se colocarán los directorios dónde se desea que **''crond''** busque los programas a ejecutar. Debe tenerse en cuenta que solo buscará en esos directorios y no en los declarados en el **''PATH''** del usuario. Si el programa no está en una de esos directorios hay 2 posibilidades: * agregar el directorio a este campo. Los directorios se separan con dos puntos(:) * incluir el path completo en la linea de comando El tercero, manda los outputs del cron al root, o a quien queramos.Si queremos que no se envie nada sólo debemos dejar la variable así: **''MAILTO=""''** o borrar toda la linea. Los **''/etc/cron.hourly''**, **''daily''**...son fichero que usa cron para su gestión interna y los lanza cada día. ===== Campos de crontab ===== Las líneas en blanco, los espacios iniciales y los tabuladores se ignoran al momento de procesar la lista de tareas. Los comentarios en este fichero son líneas completas cuyo //primer carácter que **no sea un espacio**// es un carácter **''#''**. Las línea de programación de tareas siguen un formato estándar formada por cinco campos que indican un instante de ejecución y la ruta del fichero que hay que ejecutar. **Los campos que describen el instante de ejecución son por orden:** - minutos --> enteros de entre 0-59 - horas --> enteros de 0-23 - dia --> enteros de 1-31 - mes --> enteros de 0-12 o mes dic-jan-feb...dic - día de la semana --> enteros 0-7 o sun-mon-tue...sun - orden a ejecutar --> ls -h > /home/test/ls.txt **Un campo puede contener:** * Un un asterisco (*) para indicar todos los posibles valores * Un valor fijo para indicar un minuto, hora, día o mes * Un rango de valores, dos números separados por guiones. Un rango puede terminar en /numero para indicar el incremento * Una lista de valores separados por comas * Un valor */numero para indicar todos los valores con incremento de "número" **Describamos un poco el comportamiento:** Por ejemplo, si ponemos un asterisco (*) en algún campo, por ejemplo el mes, esto hará que se ejecute la orden todos los meses, y luego respetará los demás valores, tales como el día o la hora. Si queremos indicar un rango de enteros, lo haremos con un guión (-). Si queremos indicar enteros separados, se harán con comas (,), por ejemplo: **''1, 2, 3''**. Podemos concretar o excluir valores usan la barra (/), es decir, si queremos que una orden se ejecute durante los 0-59 minutos de una hora menos en el minuto 15, pues lo marcaremos haciendo: **''0-59/15''**. También podemos hacer que una orden que se ejecute en un determinado minuto, haciendo: **''*/25''**. Esto hará que nuestra tarea se ejecute siempre en el minuto 25. El uso de la barra (/) y el asterisco (*) puede emplearse en todos los campos. Si queremos que una tearea no sea ejecutada sólo debemos comentar esa linea al principio con la "almohadilla" o "numeral" (#). Los cinco(5) primeros campos pueden ser reemplazados por 8 valores especiales: ^valor ^significado ^ |@reboot |Ejecutar una sola vez, al inicio del sistema| |@yearly |Ejecutar una vez al año, "0 0 1 1 *"| |@annually |(igual a @yearly)| |@monthly |Ejecutar una sola vez al mes, "0 0 1 * *"| |@weekly |Ejecutar una sola vez a la semana, "0 0 * * 0"| |@daily |Ejecutar una sola vez al día, "0 0 * * *"| |@midnight |(igual a @daily)| |@hourly |Ejecutar cada hora, "0 * * * *"| ===== Ejemplos de uso ===== Varias formas de configurar la ejecución de la orden ''**/usr/bin/fetchmail**'': Ejecutarlo a las 12 de la noche cada día 0 0 * * * /usr/bin/fetchmail Ejecutarlo a las 12 :15 de la noche cada día 15 0 * * * /usr/bin/fetchmail Ejecutarlo 15 después de cada hora exacta, a las y cuarto 15 * * * * /usr/bin/fetchmail Ejecutarlo el día 1 del mes a las 6:30 30 6 1 * * /usr/bin/fetchmail Ejecutarlo cada dos día a las 6:30 30 6 */2 * * /usr/bin/fetchmail Ejecutarlo los días 1,3,7,12,15 y 20 del mes a las 6:30 30 6 1,3,7,12,15,20 * * /usr/bin/fetchmail Ejecutarlo el día 1 de julio a las 6:30 30 6 1 7 * /usr/bin/fetchmail Ejecutarlo los lunes cada 10 minutos */10 * * * 1 /usr/bin/fetchmail Ejecutarlo de lunes a viernes a las hora en punto 0 * * * 1-5 /usr/bin/fetchmail