Commande Linux crontab : exécution cyclique des tâches planifiées (explication détaillée)

Le format de base de la commande crontab est le suivant :

[root@localhost ~]# crontab [options] [fichier]

file fait référence au nom du fichier de commande, ce qui signifie que file est utilisé comme fichier de liste de tâches de crontab et chargé dans crontab. Si le nom du fichier n'est pas spécifié dans la ligne de commande, cette commande acceptera la commande tapée sur le standard entrée (clavier) et vont-ils taper crontab.

Le tableau 1 répertorie les options et fonctions couramment utilisées de cette commande.

Tableau 1 Options et fonctions communes de la commande crontab
Possibilités Fonction
-u utilisateur Utilisé pour définir le service crontab d'un certain utilisateur. Par exemple, "-u demo" indique
le service crontab de l'utilisateur de démonstration de l'appareil. Cette option est généralement exécutée par l'utilisateur root.
-e Modifiez le contenu du fichier crontab d'un utilisateur. Si aucun utilisateur n'est spécifié, cela signifie éditer le fichier crontab de l'utilisateur actuel.
-l Afficher le contenu du fichier crontab d'un utilisateur. Si aucun utilisateur n'est spécifié, cela signifie afficher le contenu du fichier crontab de l'utilisateur actuel.
-r  Supprimer le fichier crontab d'un utilisateur de /var/spool/cron. Si aucun utilisateur n'est spécifié, le fichier crontab de l'utilisateur actuel sera supprimé par défaut. 
-je Donnez une invite de confirmation lors de la suppression du fichier crontab de l'utilisateur.

Les tâches planifiées de Crontab sont très simples : exécutez simplement la commande "crontab -e" et entrez la tâche que vous souhaitez exécuter régulièrement. Cependant, lorsque nous exécutons la commande "crontab -e", un fichier vide est ouvert et la méthode de fonctionnement est la même que celle de Vim. Le format du fichier est le suivant :

[root@localhost ! ]# crontab -e
#Entrez dans l'interface d'édition de crontab. Vim s'ouvrira pour modifier votre tâche
* * * * * Tâche à exécuter 

Dans ce fichier, 5 "*" sont utilisés pour déterminer le temps d'exécution de la commande ou de la tâche. Les significations spécifiques de ces 5 "*" sont indiquées dans le tableau 2.

Tableau 2 : représentation temporelle de la crontab
projet signification portée
D'abord"*" La minute de l'heure (minute) 0~59
la deuxième"*" Heure de la journée (heure) 0~23
Le troisième"*" Jour du mois (jour) 1~31
le quatrième"*" Mois de l'année (mois) 1~12
le cinquième"*" Jour de la semaine (semaine) 0 ~ 7 (0 et 7 représentent tous deux dimanche)

Dans la représentation temporelle, il existe des symboles spéciaux, comme le montre le tableau 3.

Tableau 3 Symboles horaires spéciaux
symboles spéciaux signification
*(Astérisque) Représente à tout moment. Par exemple, le premier « * » signifie qu'il sera exécuté toutes les minutes pendant une heure.
,(virgule) Représente le temps discontinu. Par exemple, « commande 0 8, 12, 16*** » signifie que la commande est exécutée à 8h00, 12h00 et 16h00 tous les jours.
-(barre du milieu) Représente une plage de temps continue. Par exemple, « commande 0 5 ** 1-6 » signifie exécuter la commande à 5h00 du lundi au samedi.
/ (barre oblique) Représente la fréquence à laquelle il est exécuté. Par exemple, « commande */10**** » signifie exécuter la commande toutes les 10 minutes.

Une fois l'édition "crontab -e" terminée, une fois enregistrée et quittée, la tâche planifiée sera effectivement écrite dans le répertoire /var/spool/cron/. Les tâches planifiées de chaque utilisateur se distinguent par leurs propres noms d'utilisateur. Et la commande crontab prendra effet tant qu'elle sera enregistrée, tant que le service crond sera démarré.

 Exemple Crontab :

Signification de l'heure 45 22 *** la commande exécute la commande 0 à 22h45 17 ** 1 commande exécute la commande 0 5 1 à 17h00 tous les lundis, 15** la commande s'exécute à 5 heures du matin le 1er et le 15 de chaque mois Exécuter la commande 40 à 0h00 4 ** La commande 1-5 exécute la commande à 4h40 du lundi au vendredi */10 4 *** La commande exécute la commande 0 à 4h00 tous les jours, toutes les 10 minutes 0 1, 15 * 1 commande sera exécutée le 1er et le 15 de chaque mois, et à 0h00 chaque semaine. Attention : il est préférable de ne pas afficher le jour de la semaine et le jour en même temps, car ils définissent les deux jours, ce qui C'est très simple. Confondre les administrateurs


[Exemple 1] Laissez le système écrire une ligne « 11 » dans le fichier /tmp/test toutes les 5 minutes pour vérifier si la tâche planifiée du système sera exécutée.

[root@localhost ~]# crontab -e
#Entrez l'interface d'édition
*/5 * * * * /bin/echo "11" >> /tmp/test

 Cette tâche n'a aucune signification dans le temps de travail, mais elle permet de vérifier facilement si nos tâches planifiées peuvent être exécutées normalement. Si vous pensez que toutes les 5 minutes est trop long, remplacez-le par "*" et laissez-le s'exécuter toutes les minutes. Et comme la commande at, si nous exécutons régulièrement des commandes système, il est préférable d’utiliser des chemins absolus.

[Exemple 2] Laissez le système redémarrer à 5h05 tous les mardis.

[root@localhost ~]# crontab -e
5.5 * * 2 /sbin/shutdown -r maintenant

Si le serveur est soumis à une forte pression de charge, il est recommandé de le redémarrer une fois par semaine pour remettre l'état du système à zéro. Par exemple, la plupart des serveurs de jeux sont entretenus une fois par semaine. La tâche la plus importante lors de la maintenance est de redémarrer et de remettre l'état du système à zéro. À l’heure actuelle, nous pouvons laisser notre serveur l’exécuter automatiquement et régulièrement.

[Exemple 3] Le script de sauvegarde du journal autobak.sh est exécuté régulièrement à 3h30 du matin les 1er, 10 et 15 de chaque mois.

[root@localhost ~]# crontab -e
30.3 1,10,15 * * /root/sh/autobak.sh

 Une fois ces tâches planifiées enregistrées, elles peuvent être exécutées à l'heure spécifiée. Vous pouvez utiliser des commandes pour afficher et supprimer des tâches planifiées. Les commandes sont les suivantes :

[root@localhost ~]# crontab -l
#Afficher les tâches crontab de l'utilisateur root
*/5 * * * * /bin/echo "11" >> /tmp/test
5.5 * * 2 /sbin/shutdown -r now
30.3 1 , 10, 15 * * /root/sh/autobak.sh
[root@localhost ~]# crontab -r
#Supprimer toutes les tâches planifiées de l'utilisateur root. Si vous souhaitez uniquement supprimer une certaine tâche planifiée, vous pouvez exécuter la commande "crontab -e" pour passer en
mode #edit et supprimer manuellement
[root@localhost ~]# crontab -l
no crontab pour root
#Après la suppression, interrogez les horaires de l'utilisateur root Mission accomplie

Lorsque vous rédigez des tâches planifiées crontab, vous devez prêter attention aux points suivants :

  • Les 6 options ne peuvent pas être vides et doivent être remplies. En cas de doute, utilisez « * » pour représenter n'importe quelle heure.
  • La durée de validité minimale d'une tâche planifiée crontab est de quelques minutes et la durée de validité maximale est de mois. Des moments tels que l'exécution en 2018 et 3 h 30 minutes et 30 secondes ne peuvent pas être reconnus.
  • Lors de la définition de l'heure, il est préférable de ne pas inclure la date et la semaine dans une tâche planifiée, car elles sont toutes deux mesurées en jours, ce qui peut facilement dérouter les administrateurs.
  • Dans les tâches planifiées, que vous écriviez des commandes directement ou dans un script, il est préférable d'utiliser des chemins absolus. Parfois, les commandes utilisant des chemins relatifs signaleront des erreurs.

Guess you like

Origin blog.csdn.net/qq_43079001/article/details/132083577