El proceso cron integrado de Linux puede ayudarnos a satisfacer estas necesidades. Cron junto con scripts de shell no tiene problemas incluso con instrucciones muy complejas.

Introducción a cron

El comando crontab que usamos a menudo es la abreviatura de cron table. Es el archivo de configuración de cron, también se puede llamar lista de trabajos. Podemos encontrar los archivos de configuración relacionados en las siguientes carpetas.

  • El directorio /var/spool/cron/ almacena las tareas crontab de cada usuario, incluido root. Cada tarea se nombra con el nombre del creador.
  • /etc/crontab Este archivo es responsable de programar diversas tareas de administración y mantenimiento.
  • El directorio /etc/cron.d/ se utiliza para almacenar cualquier archivo o script crontab que se vaya a ejecutar.
  • También podemos colocar scripts en los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly para que se ejecuten cada hora/día/semana/mes.

Uso de crontab

Los comandos que usamos habitualmente son los siguientes:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

Usamoscrontab -eAl entrar en la edición de la hoja de trabajo del usuario actual, es la interfaz común de vim. Cada línea es un comando.

La estructura de comando de crontab es tiempo + acción, y su tiempo tieneminuto, hora, día, mes, semanacinco tipos, y los operadores son

  • * todos los números dentro del rango de valores
  • /cada cuántos números
  • -de X a Z
  • ,números dispersos

Ejemplos

Ejemplo 1: ejecutar myCommand cada 1 minuto

* * * * * myCommand

Ejemplo 2: ejecutar en los minutos 3 y 15 de cada hora

3,15 * * * * myCommand

Ejemplo 3: ejecutar en los minutos 3 y 15 de 8 a 11 a.m.

3,15 8-11 * * * myCommand

Ejemplo 4: ejecutar en los minutos 3 y 15 de 8 a 11 a.m. cada dos días

3,15 8-11 */2  *  * myCommand

Ejemplo 5: ejecutar en los minutos 3 y 15 de 8 a 11 a.m. todos los lunes

3,15 8-11 * * 1 myCommand

Ejemplo 6: reiniciar smb a las 21:30 cada noche

30 21 * * * /etc/init.d/smb restart

Ejemplo 7: reiniciar smb a las 4:45 los días 1, 10 y 22 de cada mes

45 4 1,10,22 * * /etc/init.d/smb restart

Ejemplo 8: reiniciar smb a la 1:10 los sábados y domingos

10 1 * * 6,0 /etc/init.d/smb restart

Ejemplo 9: reiniciar smb cada 30 minutos entre las 18:00 y las 23:00

0,30 18-23 * * * /etc/init.d/smb restart

Ejemplo 10: reiniciar smb a las 11:00 p.m. los sábados

0 23 * * 6 /etc/init.d/smb restart

Ejemplo 11: reiniciar smb cada hora

0 */1 * * * /etc/init.d/smb restart

Ejemplo 12: reiniciar smb cada hora entre las 11 p.m. y las 7 a.m.

0 23-7/1 * * * /etc/init.d/smb restart