Cron y Crontab.

Crontab

565411358_1518889

Crontab es sinónimo de «cron», ya que utiliza el planificador de tareas cron para ejecutar tareas; cron en sí lleva el nombre de «Cronos», la palabra griega que significa tiempo.

Cron es el proceso del sistema que llevará a cabo automáticamente de acuerdo con un horario establecido. El calendario se llama el crontab, que es también el nombre del programa utilizado para editar ese horario.

Digamos que hay un script que realiza una copia de seguridad de archivos importantes, o crea un informe sobre las estadísticas del sistema, por ejemplo., digamos que el script se llama /home/alumno/scripts/cdespertarse.sh, y que se desea ejecutar cada mañana a las 5 AM

Para editar el crontab, se utiliza este comando:
crontab -e
Esto abrirá el crontab en un editor de texto (Por lo general, esto es vi o vim , pero puede ser algo más dependiendo de su Linux distribución ).

El archivo crontab por defecto es el siguiente:

# Editar este archivo para introducir tareas a ejecutar por cron.
· #
# Cada tarea a ejecutar tiene que estar definido a través de una sola línea
# Indica con diferentes campos cuando se ejecuta la tarea
# Y qué comando a ejecutar para la tarea
· #
# Para definir el tiempo se pueden proporcionar valores concretos para
# Minuto (m), horas (h), día del mes (dom), el mes (mon),
# Y día de la semana (Dow) o el uso ‘*’ en estos campos (para «cualquiera»). · #
# Ten en cuenta que se iniciarán las tareas basadas en el sistema del cron
# Noción del demonio de tiempo y zonas horarias.
· #
# Salida de las tareas crontab (incluidos los errores) se envía a través
# Correo electrónico al usuario el archivo crontab pertenece a (no es redirigido).
· #
# Por ejemplo, puede ejecutar una copia de seguridad de todas sus cuentas de usuario
# A las 5 am cada semana con:
# 0 5 * * 1 alquitrán -zcf /var/backups/home.tgz / home /

Todas estas líneas comienzan con un #, ya que son los comentarios ; que son ignorados por cron, y sólo están ahí para que lo lea.

Así pues, ahora vamos a añadir nuestro trabajo para el crontab. Cada trabajo que se agrega debe ocupar una sola línea.

Pero, ¿cómo formatear nuestra línea de entrada de trabajo? Por encima, se puede ver que la última línea de comentario está ahí para recordarle cómo dar formato a su entrada. El formato es muy simple: seis piezas de información, cada una separadas por un espacio; los primeros cinco piezas de información le dicen a cron cuándo ejecutar el trabajo, y la última pieza de información cron dice lo que es el trabajo.

La información que se debe incluir es (en orden de aparición):

Un número (o una lista de números, o rango de números), m, representa el minuto de la hora;
Un número (o una lista de números, o rango de números), h, representa la hora del día;
Un número (o lista de números, o rango de números)dom, que representa el día del mes;
Un número (o lista, o rango), o el nombre (o una lista de nombres) mon, que representa el mes del año;
Un número (o lista, o rango), o el nombre (o una lista de nombres) Dow, que representa el día de la semana; y
el comando, que es la orden a ejecutar, tal y como aparecería en la línea de comandos.

Un «número» es un número entero, por ejemplo 5. Una «lista de números» es un conjunto de números enteros separados por comas, por ejemplo, 15,30,45, lo que representaría sólo esos tres números. Un «rango de números» es un conjunto de números separados por un guión, por ejemplo 10-20, lo que representaría todos los números del 10 al 20 inclusive.

Queremos que nuestro trabajo se ejecute a las 5 AM, lo que sería el minuto 0, 5 horas, todos los días del mes, todos los meses, todos los días de la semana. Tenemos que añadir una línea al final del archivo que se parece a esto:

0 5 * * * /home/myname/scripts/do-every-day.sh

En vi o vim, puede agregar esta línea escribiendo G para ir al final del archivo, y o añadir una nueva línea y entrar en el modo de inserción.

Los asteriscos ( «*») en nuestra entrada cron que cuentan para esa unidad de tiempo, el trabajo debe ser ejecutado «todos». Ahora puede guardar el archivo y salga del editor de texto. En vi, esto se hace pulsando ESCAPE y luego escribiendo:. WQ (para «escribir y salir») y pulsando ENTER crontab le dará el siguiente mensaje:

crontab: crontab la instalación de nuevo

… Y volver a la línea de comandos. La secuencia de comandos se ejecutará ahora de forma automática a las 5 de la mañana, todos los días.

Para ver su crontab, puede utilizar este comando:

-v crontab

… o, para eliminar su crontab de modo que no hay puestos de trabajo son cada vez ejecutados por cron, use este comando:

crontab -r

Para más ejemplos de cómo configurar el crontab, consulte nuestra Ejemplos sección de abajo.
sintaxis crontab

crontab [-u usuario]

crontab [-u usuario] [-l | -r | -e] [-i] [-s]

Descripción técnica

crontab es el programa utilizado para editar, eliminar o enumerar las tablas utilizadas para conducir el cron daemon . Cada usuario puede tener su propio crontab. Aunque estos archivos se encuentran en / var / spool /, que no están destinados a ser editado directamente, y ahí es donde el comando crontab entra en acción.

cron puestos de trabajo pueden ser permite o no, para los usuarios individuales, como se especifica en los archivos cron.allow y cron.deny, ubicado en el directorio / etc. Si el archivo existe cron.allow, un usuario debe aparecer allí para que se les permita utilizar un comando determinado. Si no existe el archivo cron.allow pero el archivo cron.deny hace, a continuación, un usuario no debe aparecer allí con el fin de utilizar un comando determinado. Si ninguno de estos archivos existe, sólo el superusuario será permitido el uso de una orden dada. Otra opción es usar PAM (módulo de autenticación conectable) de autenticación para configurar los usuarios que pueden o no utilizar crontab y cron sistema de puestos de trabajo, como se configura en /etc/cron.d/.

El directorio temporal para trabajos de cron se puede ajustar en las variables de entorno (véase más adelante); si no, / tmp se utiliza como el directorio temporal.
opciones
-u Añadir el nombre del usuario cuya crontab es que ser ajustado. Si no se da esta opción, crontab examina «su» crontab, es decir, el crontab de la persona que ejecuta el comando. Tenga en cuenta que su puede confundir crontab y que si está ejecutando dentro de su siempre se debe utilizar la opción -u por razones de seguridad. La primera forma de este comando se utiliza para instalar un nuevo crontab de algún archivo llamado, o de la entrada estándar si el nombre se da como «-«.
-l Visualizar el crontab actual.
-r Retire el crontab actual.
-mi Editar el crontab actual, con el editor especificado en las variables de entorno VISUAL o EDITOR.
-yo Igual que -r, pero le da al usuario una «Y / n» pronta antes de quitar realmente el crontab.
-s SELinux solamente: anexa el actual contexto de seguridad SELinux cadena como un ajuste de MLS_LEVEL al archivo crontab antes de editar o sustitución se produce. Consulte la documentación de SELinux para más detalles.
Más Acerca de los archivos crontab

Las líneas en blanco y los espacios iniciales y las pestañas se ignoran. Líneas cuyo primer no-espacio de carácter es un signo de libra (#) se interpretan como comentarios y se ignoran. Tenga en cuenta que los comentarios no son permitidos en la misma línea que los comandos cron, ya que serán tomados como parte del comando. Del mismo modo, los comentarios no están permitidos en la misma línea que los ajustes de variables de entorno.

Una línea activa en un crontab será o bien un ajuste del entorno o un comando cron. Un ajuste del entorno es de la forma

nombre = valor

donde los espacios alrededor del signo igual (=) son opcionales, y los espacios no-líderes de valor posteriores serán parte del valor asignado al nombre. La cadena de valor puede ser colocado entre comillas (simples o dobles, pero coincidentes) para preservar iniciales o finales espacios en blanco.

Varias variables de entorno se establecen automáticamente por el demonio cron. SHELL se establece en / bin / sh, y LOGNAME y HOME se establecen desde el etc / línea / passwd del propietario. HOME del crontab y SHELL puede ser anulado por los ajustes en el crontab ; LOGNAME no.

Otra nota: la variable LOGNAME a veces se llama USUARIO en BSD sistemas. En estos sistemas, el usuario puede ajustar también.

Además de LOGNAME, el hogar y SHELL, cron se verá en mailto si tiene alguna razón para enviar el correo , como resultado de la ejecución de comandos en «este» crontab. Si se define MAILTO (y no vacío), el correo se envía al usuario llamado. Si se define MAILTO pero vacía ( ‘MAILTO = «»‘), no se enviará ningún correo. De lo contrario, el correo se envía al propietario del crontab. Esta opción es útil si se decide por / bin / mail en lugar de / usr / lib / sendmail como su programa de correo al instalar cron, porque / bin / mail no hace aliasing.

De forma predeterminada, cron enviará el correo a través del «Content-Type: ‘cabecera’ text / plain ‘con el parámetro» charset =’ establecido al charmap / conjunto de códigos del entorno local en el que se pone en marcha crond: o bien la configuración regional del sistema ( si no se establecen las variables de entorno LC_ *) o la configuración regional especificada por las variables de entorno LC_ *. Se pueden utilizar diferentes codificaciones de caracteres para la salida de trabajos cron correo estableciendo el CONTENT_TYPE y CONTENT_TRANSFER_ENCODING variables de crontabs.

La variable de entorno MLS_LEVEL proporciona soporte para múltiples contextos de seguridad de SELinux por puesto de trabajo en el mismo crontab. De forma predeterminada, los trabajos de cron se ejecutan con el contexto de seguridad de SELinux por defecto del usuario que creó el archivo crontab. Cuando se utilizan varios niveles de seguridad y roles, esto puede no ser suficiente, ya que el mismo usuario puede estar en ejecución en un papel diferente o en un nivel de seguridad diferente. Puede establecer MLS_LEVEL a la cadena de contexto de seguridad SELinux especificando el contexto de seguridad de SELinux en el que desea que el trabajo se ejecute, y crond va a establecer el contexto de ejecución de la o de puestos de trabajo a la que el ajuste se aplica al contexto especificado. Ver la descripción de la -s crontab en la sección de opciones.
Formato de comandos cron

Cada comando cron en el archivo crontab tiene cinco campos de fecha y hora, seguido de un nombre de usuario si es el archivo crontab del sistema, seguido de un comando. Los comandos se ejecutan por cron cuando el minuto, hora, y el mes del año campos coinciden con la hora actual, y al menos uno de los dos campos de día (día del mes, o día de la semana) coincide con la hora actual. Tenga en cuenta que esto significa que los tiempos no existentes, tales como «horas perdidos» durante la conversión de verano, nunca coinciden, provocando trabajos programados durante los «tiempos perdidos» que no se ejecuta. Del mismo modo, los tiempos que se producen más de una vez durante el horario de verano a juego hará que los empleos que se ejecute dos veces.

cron examina las entradas crontab una vez cada minuto.

Los campos de hora y fecha son:
campo valores permitidos
minuto 0-59
hora 0 – 23
dia del mes 1-31
mes 1 – 12 (o nombres; véase el ejemplo siguiente)
día de la semana 0 – 7 (0 ó 7 es el domingo, o utilizar nombres; véase más adelante)

Un campo puede ser un asterisco (*), que siempre es sinónimo de «primero a través de la última».

se permiten rangos de números. Los rangos son dos números separados por un guión. El rango especificado es inclusivo; por ejemplo, 8-11 para una entrada «horas» especifica la ejecución en horas 8, 9, 10 y 11.

Se permiten las listas. Una lista es un conjunto de números (o rangos) separados por comas. Ejemplos: «1,2,5,9», «0-4,8-12».

Los valores de salto pueden ser utilizados en conjunción con rangos. Por ejemplo, «0-23 / 2» se puede utilizar en el campo de hora para especificar la ejecución del comando cada dos horas. También se permiten pasos después de un asterisco, por lo que si usted quiere decir «cada dos horas», puede utilizar «* / 2».

Los nombres también pueden ser utilizados para el «día de la semana» campos «mes» y. Utilice las tres primeras letras del día o mes en particular (caso no importa). Rangos o listas de nombres no están permitidos.

El campo «sexto» (el resto de la línea) especifica la orden a ejecutar. La porción comando completo de la línea, hasta un salto de línea o% de caracteres , será ejecutado por / bin / sh o por el shell especificado en la variable SHELL del cronfile. Porcentaje-muestras (%) en el comando, a menos que se escapó con una barra invertida (\), se transforman en caracteres de nueva línea, y todos los datos después de la primera% se enviarán al comando como entrada estándar.

Tenga en cuenta que el día de la ejecución de un comando se puede especificar por dos campos: el día del mes y día de la semana. Si ambos campos están restringidas (en otras palabras, no son *), se ejecutará el comando cuando cualquiera de los campos coincide con la hora actual. Por ejemplo, «30 4 1,15 5 *» causaría un comando que se ejecute a las 4:30 am los días 1 y 15 de cada mes, además de todos los viernes.
archivos

/etc/cron.allow
/etc/cron.deny
ejemplos crontab

crontab -e

Editar su crontab.

crontab -l

Pantalla ( «lista») el contenido de su crontab.

crontab -r

Retire su crontab, efectivamente desclasificación todos los trabajos crontab.

Charles sudo crontab -e -u

Editar el crontab de los charles usuario llamado. La opción -u requiere privilegios de administrador, por lo que el comando se ejecuta usando sudo .

sudo crontab -u -l Jeff

Ver el crontab del usuario Jeff.

sudo crontab -u -r arena

Retire el crontab de arena usuario.
Ejemplos de entradas de crontab

15 6 2 1 * /home/melissa/backup.sh

Ejecutar el script de shell /home/melissa/backup.sh el 2 de enero a las 6:15 AM

15 06 02 Ene * /home/melissa/backup.sh

Igual que la entrada anterior. Ceros se pueden añadir al comienzo de un número para la legibilidad, sin cambiar su valor.

0 9-18 * * * /home/carl/hourly-archive.sh

/home/carl/hourly-archive.sh Ejecutar cada hora, en la hora, de 9 am a 6 pm, todos los días.

0 9,18 * * /home/wendy/script.sh Mon

/home/wendy/script.sh Ejecutar todos los lunes, a las 9 am y 6 pm

30 22 * ​​* L, M, X, J, V / usr / local / bin / copia de seguridad

Ejecutar / usr / local / bin / copia de seguridad a las 10:30 pm, todos los días de la semana.
comandos relacionados

a – Programar un comando para ejecutar en un momento determinado.

Deja un comentario