Saltar al contenido principal

Comandos básicos de Cron

Si desea editar el archivo Crontab (un archivo que contiene instrucciones para ejecutar tareas programadas), introduzca el siguiente comando en el terminal:

crontab -e

El resultado se verá así:

Edición de crontab

Lo más probable es que se abra el editor vi. Dado que este editor se utiliza frecuentemente al trabajar con Cron, recomendamos familiarizarse con los comandos básicos de vi.

Si desea editar el archivo crontab de otro usuario, use el comando crontab -u username -e. Solo los superusuarios pueden editar los archivos de otros usuarios, por lo que deberá introducir sudo su antes del comando.

Edición del crontab de otro usuario

Si desea eliminar el archivo crontab actual del usuario actual, introduzca el siguiente comando:

crontab -r

El siguiente comando es similar al comando -r, pero solicita confirmación antes de eliminar el archivo crontab:

crontab -i

Si desea mostrar el contenido del archivo crontab abierto, introduzca el siguiente comando en el terminal:

crontab -l

Este comando también puede mostrar si tiene archivos crontab. Si no se han creado archivos, se mostrará el siguiente mensaje:

Sin archivos crontab

Para ver los archivos crontab de otros usuarios, introduzca el siguiente comando como superusuario:

crontab -u username -l
Visualización del crontab de otro usuario

Sintaxis de Cron

Un archivo crontab consta de dos partes: la programación y el comando. El comando se ve así:

* * * * * /bin/sh backup.sh

Por ejemplo,

  • * * * * /bin/sh backup.sh ejecuta la copia de seguridad cada minuto.
  • 30 18 * * * rm /home/sydtesting/tmp/* significa que los archivos tmp se eliminarán de /home/sydtesting/tmp todos los días a las 18:30.

El archivo Crontab tiene cinco campos. Cada campo está representado por un asterisco y define la fecha y hora de la tarea que debe ejecutarse regularmente.

Campos de Crontab
  • Minutos — el minuto de la hora en que se ejecutará el comando (de 0 a 59).
  • Horas — la hora en que se iniciará el comando (de 0 a 23).
  • Día del mes — en qué día del mes debe ejecutarse el comando (de 1 a 31).
  • Mes — en qué mes se ejecutará el comando (de 1 a 12).
  • Día de la semana — en qué día de la semana debe ejecutarse el comando (de 0 a 6, 0 — domingo).

Ciertos símbolos también tienen significado. Utilice:

  • Asterisco (*) para especificar parámetros de programación.
  • Coma (,) para especificar dos o más opciones de tiempo de ejecución.
  • Guion (-) para establecer un rango de tiempos de ejecución.
  • Barra (/) para crear intervalos de tiempo especificados dentro de un cierto rango.
  • Last (L) para especificar el último día de la semana en un mes determinado. Por ejemplo, 3L significa el último miércoles.
  • Weekday (W) para especificar el día laborable más cercano a un tiempo dado. Por ejemplo, 1W significa que el script se ejecutará el día laborable más cercano al primer día; si el 1 es domingo, el comando se ejecutará el lunes (día 2).
  • Hash (#) para especificar el día de la semana en el campo del mes (de 1 a 5). Por ejemplo, 1#2 significa el segundo lunes.
  • Signo de interrogación (?) para seleccionar un día específico para ejecutar el script. Para un funcionamiento correcto, debe especificar el día del mes o el número del día; no puede especificar ambos simultáneamente. Este símbolo permite dejar un valor vacío.

Ejemplos

Tenga en cuenta que la salida del comando se envía automáticamente al correo electrónico local. Si no desea recibir estos correos, añada >/dev/null 2>&1 a la sintaxis, como se muestra en el ejemplo:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Si desea que la salida se envíe a otro correo electrónico, puede añadir MAILTO, seguido de la dirección de correo. Por ejemplo:

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Más ejemplos de sintaxis:

ExpresiónResultado
0 0 * * * /bin/sh backup.shRealizar copia de seguridad de la base de datos a medianoche una vez al día.
0 6,18 * * * /bin/sh backup.shRealizar copia de seguridad de la base de datos dos veces al día a las 6 AM y 6 PM.
0 */6 * * * /scripts/monitor.shRealizar monitoreo cada seis horas.
*/10 * * * * /home/user/script.shEjecutar una tarea cron para el archivo de script ubicado en el directorio de inicio cada 10 minutos.
0 * 20 7 * /bin/sh backup.shEjecutar copia de seguridad de la base de datos cada hora el 20 de julio.
0 0 * * 2 * /bin/shEjecutar copia de seguridad de la base de datos a medianoche cada martes.
* * * 1,2,5 * /script/script.shEjecutar el comando en enero, febrero y mayo.
10-59/5 5 * * * /home/user/script.shEjecutar el comando cada 5 minutos a las 5 AM, comenzando a las 5:10 AM.
0 8 1 */3 * /home/user/script.shEjecutar el comando trimestralmente el primer día a las 8 AM.
* * * * * /scripts/script.sh; /scripts/scrit2.shPara programar múltiples tareas en una sola tarea cron.
@reboot /scripts/script.shPara ejecutar una tarea específica cada vez que el sistema se inicia.
0 0 1 * * /home/user/script.shEjecutar el comando el primer día de cada mes.