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

Commande crontab Linux

Comprehensive List of Linux Commands

Crontab Linux est utilisé pour exécuter des programmes de manière régulière.

Après l'installation du système d'exploitation, cette commande de planification des tâches est automatiquement démarrée par défaut.

La commande crond vérifie régulièrement chaque minute s'il y a des tâches à exécuter, et exécute automatiquement ces tâches si elles doivent être exécutées.

Note:Les tâches cron nouvellement créées ne s'exécutent pas immédiatement, au moins après 2 minutes avant de pouvoir, bien sûr, vous pouvez redémarrer cron pour l'exécuter immédiatement.

Les tâches de planification des tâches Linux sont principalement divisées en deux catégories suivantes :

  • 1Travaux système : Les tâches périodiques que le système doit effectuer, telles que la sauvegarde des données système, le nettoyage du cache
  • 2Travaux personnels : Les tâches régulières qu'un utilisateur doit effectuer, par exemple toutes les10Vérifiez les serveurs de messagerie pour de nouveaux messages à chaque minute, ces tâches peuvent être configurées par chaque utilisateur

Syntaxe

crontab [ -u user ] fichier

ou

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

Explication :

Crontab est utilisé pour permettre aux utilisateurs d'exécuter des programmes à des moments fixes ou à des intervalles fixes, en d'autres termes, c'est une sorte de plan de tâches de l'utilisateur.

-u user signifie configurer le plan de tâches d'un utilisateur spécifique, ce qui suppose que vous devez avoir les autorisations (par exemple, root) pour spécifier le plan de tâches d'autrui. Si vous ne n'utilisez pas -u user signifie configurer le plan de tâches personnel.

Explication des paramètres:

  • -e : Utilisez l'éditeur de texte pour configurer le plan de tâches, l'éditeur de texte par défaut est VI. Si vous souhaitez utiliser un autre éditeur de texte, veuillez d'abord configurer la variable d'environnement VISUAL pour spécifier l'éditeur de texte à utiliser (par exemple, setenv VISUAL joe)
  • -r : supprimer le calendrier actuel
  • -l : lister le calendrier actuel

Le format de l'heure est le suivant :

f1 f2 f3 f4 f5 program
  • où f1 est pour indiquer les minutes, f2 représente l'heure, f3 représente le jour du mois, f4 représente le mois, f5 représente le jour de la semaine. program représente le programme à exécuter.
  • quand f1 si * signifie exécuter program chaque minute, f2 si * signifie exécuter le programme chaque heure, et ainsi de suite
  • quand f1 si-b signifie exécuter pendant a minutes à b minutes, f2 si-b signifie exécuter de a à b heures, et ainsi de suite
  • quand f1 si */n signifie exécuter toutes les n minutes de l'intervalle de temps, f2 si */n signifie exécuter toutes les n heures de l'intervalle de temps, et ainsi de suite
  • quand f1 si a, b, c,... alors cela signifie que les minutes a, b, c,... doivent être exécutées, f2 si a, b, c,... alors cela signifie que les heures a, b, c,... doivent être exécutées, et ainsi de suite
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- jour de la semaine (0 - 6) (dimanche est 0)
|    |    |    +---------- mois (1 - 12) 
|    |    +--------------- le jour du mois (1 - 31)
|    +-------------------- heure (0 - 23)
+------------------------- minute (0 - 59)

L'utilisateur peut également enregistrer tous les paramètres dans un fichier, puis les définir en utilisant le mode crontab file pour le temps d'exécution.

exemple en ligne

exécuter toutes les minutes /bin/ls :

* * * * * /bin/ls

dans 12 au début du mois, chaque matin 6 heures 12 point, toutes les 3 exécuter une fois toutes les heures 0 minute /usr/bin/backup :

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

de lundi à vendredi, chaque après-midi 5:00 Envoyer une lettre à [email protected] :

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

minuit 0 heure chaque jour du mois 20 minute , 2 point 20 minute , 4 point 20 minute... Exécuter echo "haha" :

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

Voyons quelques exemples concrets :

0 */2 * * * /sbin/service httpd restart signifie redémarrer apache toutes les deux heures 
50 7 * * * /sbin/service sshd start signifie chaque jour7:50 activer le service ssh 
50 22 * * * /sbin/service sshd stop signifie chaque jour22:50 désactiver le service ssh 
0 0 1,15 * * fsck /home, chaque mois1numéro et15numéro de vérification/disque home 
1 * * * * /home/bruce/backup, la première minute de chaque heure /home/bruce/Backup this file 
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  from Monday to Friday3at/Find files named*Delete .xxx files4day before the month.
30 6 */10 * * ls  means the files from the1、11、21、31Day yes6:30 Execute ls command once

Note:After the program executes at the time you specify, the system will send an email to the current user showing the content of the program execution. If you do not want to receive such an email, please add a space after each line followed by > /dev/null 2>&1 It can be done, such as:

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

Script Execution Failure Problem

If we use crontab to schedule the execution of the script and it cannot be executed, but if executed directly through the command (such as:/After test.sh) can execute normally again, this is mainly because the environment variables cannot be read.

Solution:

  • 1、All commands need to be written in absolute path format, such as: /usr/local/bin/docker。

  • 2、Use the following code at the beginning of the shell script:

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

    3、in /etc/crontab Add the environment variable in the command before the executable command, such as: /etc/profile;/bin/sh, making the environment variables effective, for example:

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

    Comprehensive List of Linux Commands