English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
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:
el formato de tiempo es el siguiente:
f1 f2 f3 f4 f5 programa
* * * * * - - - - - | | | | | | | | | +----- 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.
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
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