CronTab

Muchas partes de la administración del sistema pueden automatizarse a través de scripts perl o scripts de shell que se ejecutan a intervalos regulares. Por ejemplo, es posible que tenga un script para verificar que su disco no esté lleno y que se ejecute una vez por hora, informándole si hay problemas. El mecanismo más común para programar comandos en sistemas Unix es a través del paquete cron. Esto permite a los usuarios programar comandos arbitrarios para ejecutarse en horarios arbitrarios con frecuencia regular.

En Debian, el paquete cron se instala como parte del sistema base y se ejecutará de manera predeterminada.

Cron, como se suministra en Debian, tiene dos propósitos:

  • Para ejecutar trabajos del sistema diariamente / semanalmente / mensualmente.
  • Para permitir a los usuarios configurar sus propios horarios.

Los horarios del sistema se configuran cuando se instala el paquete, mediante la creación de algunos directorios especiales:

/etc/cron.d
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

Excepto por el primero que es especial, estos directorios permiten programar trabajos de todo el sistema de manera aproximada. Cualquier script que sea ejecutable y se coloque dentro de ellos se ejecutará a la frecuencia que sugiere su nombre.

Por ejemplo, si coloca un script dentro de /etc/cron.daily, se ejecutará una vez al día, todos los días.

El tiempo que los scripts se ejecutan en esos directorios de todo el sistema no es algo que la administración cambie normalmente, pero los tiempos se pueden ajustar editando el archivo / etc / crontab. El formato de este archivo se explicará en breve.

La manera normal en que las personas usan cron es a través del comando crontab. Esto le permite ver o editar su archivo crontab, que es un archivo por usuario que contiene entradas que describen comandos para ejecutar y el tiempo (s) para ejecutarlos.

Para mostrar su archivo, ejecute el siguiente comando:

crontab -l

root puede ver el archivo crontab de cualquier usuario agregando «-u nombre de usuario», por ejemplo:

crontab -u root -l  # List root's crontab file.

El formato de estos archivos es bastante simple de entender. Cada línea es una colección de seis campos separados por espacios.

Los campos son:

  • El número de minutos después de la hora (0 a 59)
  • La hora en formato militar (24 horas) (0 a 23)
  • El día del mes (1 a 31)
  • El mes (1 a 12)
  • El día de la semana (0 o 7 es Sun, o use el nombre)
  • El comando para correr

Más gráficamente se verían así:

*     *     *     *     *	Usuario		Comando/Archivo a Ejecutar
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Día de la semana (0-7)
|     |     |     +------- Mes (1 - 12)
|     |     +--------- Día del Mes (1 - 31)
|     +----------- Hora (0 - 23)
+------------- Minuto (0 - 59)

Ejemplo de un archivo crontab:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
0 2 	* * 1	root    /root/bdbackups.sh
58 1 	* * *	root    /root/truncate_sessions.sh

Videos