English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Comando crontab de Linux

Manual de comandos de Linux

Crontab de Linux se utiliza para ejecutar programas regularmente.

Después de instalar el sistema operativo, el comando de programación de tareas se iniciará por defecto.

El comando crond verifica cada minuto si hay trabajos que ejecutar, y si hay trabajos que ejecutar, ejecuta automáticamente ese trabajo.

Nota:Las tareas cron recién creadas no se ejecutarán inmediatamente, al menos deben pasar 2 sólo puede ejecutarse después de que pasen

El trabajo de programación de tareas en Linux se divide principalmente en dos categorías:

  • 1Trabajos del sistema: Trabajos periódicos que debe realizar el sistema, como respaldar datos del sistema, limpiar la caché
  • 2Trabajos personales: Trabajos regulares que realiza un usuario, por ejemplo, cada10Revisar cada minuto si hay nuevos correos electrónicos en el servidor de correo, estos trabajos pueden ser configurados por cada usuario

Sintaxis

crontab [ -u user ] archivo

o

crontab [ -u user ] { -l | -r | -e }

Descripción:

crontab se utiliza para permitir que los usuarios ejecuten programas a horas fijas o intervalos fijos, en otras palabras, es similar al horario del usuario.

-u user significa configurar el horario de un usuario específico, para lo cual debe tener permisos (por ejemplo, root) para poder especificar el horario de otra persona. Si no se especifica -u user indica que se configura el horario propio.

Descripción de los parámetros:

  • -e : Ejecutar el editor de texto para configurar el horario, el editor de texto predeterminado es VI, si desea usar otro editor de texto, configure primero la variable de entorno VISUAL para especificar qué editor de texto usar (por ejemplo, setenv VISUAL joe)
  • -r : eliminar el horario actual
  • -l : listar el horario actual

el formato de tiempo es el siguiente:

f1 f2 f3 f4 f5 programa
  • donde f1 es representa los minutos, f2 representa la hora, f3 representa el día del mes, f4 representa el mes, f5 representa el día de la semana. El programa representa el programa a ejecutar.
  • cuando f1 cuando * significa que se ejecuta el programa cada minuto, f2 cuando * significa que se ejecuta el programa cada hora, etc.
  • cuando f1 cuando-b significa que se ejecuta en el intervalo de minutos desde a hasta b, f2 cuando-b significa que se ejecuta desde la hora a hasta la hora b, etc.
  • cuando f1 cuando */n significa que se ejecutan cada n intervalo de tiempo en minutos, f2 cuando */n significa que se ejecuta cada n intervalo de tiempo en horas, etc.
  • cuando f1 cuando es a, b, c,... significa que se ejecutan los minutos a, b, c,..., f2 cuando es a, b, c,... significa que se ejecuta la hora a, b, c,..., etc.
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- día de la semana (0 - 6) (domingo es 0)
|    |    |    +---------- mes (1 - 12) 
|    |    +--------------- el día del mes (1 - 31)
|    +-------------------- horas (0 - 23)
+------------------------- minutos (0 - 59)

El usuario también puede guardar todos los ajustes en un archivo y configurar el tiempo de ejecución con el modo crontab file.

ejemplo en línea

ejecutar cada minuto /bin/ls:

* * * * * /bin/ls

en 12 dentro del mes, cada mañana 6 punto a 12 punto, cada 3 ejecutar una vez cada hora en el minuto 0 /usr/bin/backup:

0 6-12/3 * 12 * /usr/bin/backup

de lunes a viernes cada tarde 5:00 enviar una carta a [email protected]

0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata

a medianoche cada día del mes 20 minutos, 2 punto 20 minutos, 4 punto 20 minutos... ejecutar echo "haha":

20 0-23/2 * * * echo "haha"

Veamos algunos ejemplos específicos a continuación:

0 */2 * * * /sbin/service httpd restart significa que se reinicia apache cada dos horas 
50 7 * * * /sbin/service sshd start significa que se hace diariamente7:50 abrir el servicio ssh 
50 22 * * * /sbin/service sshd stop significa que se hace diariamente22:50 cerrar el servicio ssh 
0 0 1,15 * * fsck /home cada mes1número y15número de verificación/disco home 
1 * * * * /home/bruce/backup en el primer minuto de cada hora /home/bruce/backup este archivo 
00 03 * * 1-5 buscar /de home "*de archivo .xxx" -mtime +4 -exec rm {} \;  de lunes a viernes3a la(s)/Buscar archivos con nombre*Eliminar archivos .xxx4día anterior al mes.
30 6 */10 * * ls  significa el archivo de1、11、21、31Día sí6:30 Ejecutar el comando ls una vez

Nota:Después de que el programa se ejecute en el tiempo especificado, el sistema enviará un correo electrónico al usuario actual que muestra el contenido de la ejecución del programa. Si no desea recibir este tipo de correo, agregue > en cada línea en blanco después de un espacio. /dev/null 2>&1 es suficiente, como:

20 03 * * * . /etc/profile;/bin/sh /var/www/w3codebox/test.sh > /dev/null 2>&1 

Problemas de ejecución de scripts

Si usamos crontab para ejecutar scripts programáticamente, no se puede ejecutar, pero si se ejecuta directamente a través del comando (como:./El archivo (test.sh) puede ejecutarse nuevamente, esto se debe principalmente a que no se pueden leer las variables de entorno.

Solución:

  • 1、Todos los comandos deben escribirse en forma de ruta absoluta, como: /usr/local/bin/docker。

  • 2、Usar el siguiente código en el principio del script de shell:

    #!/bin/sh
    . /etc/profile
    . ~/.bash_profile

    3、en /etc/crontab Agregar variables de entorno en la línea anterior al comando ejecutable, agregar el comando . /etc/profile;/bin/sh, para que las variables de entorno se hagan efectivas, por ejemplo:

    20 03 * * * . /etc/profile;/bin/sh /var/www/w3codebox/test.sh

    Manual de comandos de Linux