Crontab est un outil d'exécution planifiée couramment utilisé sous les systèmes Unix/Linux, qui peut exécuter des tâches spécifiées sans intervention manuelle. Plusieurs fois, nous devons utiliser la commande Crontab. Par exemple, le script acme.sh mentionné dans le certificat SSL du nom de domaine gratuit Let's Encrypt Wildcard utilise la tâche planifiée Crontab pour mettre à jour le certificat SSL.
Grâce à la commande crontab, nous pouvons exécuter des instructions système spécifiées ou des scripts shell à intervalles fixes. Lorsque le VPS Linux monte Google Drive et Dropbox, nous pouvons utiliser la commande Crontab pour réaliser une sauvegarde de synchronisation planifiée et utiliser Crontab pour redémarrer régulièrement le VPS et le serveur. tous les jours. Ou les services Nginx, PHP, MySQL, etc.
En bref, maîtriser la syntaxe de base de la commande Crontab est très nécessaire pour gérer nos propres hôtes VPS. Cet article explique comment utiliser la commande Linux Crontab à travers des exemples sans entrer dans une exploration approfondie. Il s'agit principalement de faciliter une requête et une référence rapides. à l'avenir.
Pour plus de commandes et d'applications liées à l'hébergement VPS, vous pouvez consulter :
- Résumé des commandes de surveillance du système Linux : processeur principal, mémoire, E/S disque, etc. pour détecter les goulots d'étranglement des performances
- Trois outils de commande Rsync, SCP et Tar-quick, solution pour la relocalisation de sites Web distants VPS et la synchronisation des données
- Trois façons de partager des répertoires de dossiers sous Linux : montage à distance NFS, stockage partagé GlusterFS et répertoires partagés Samba
1. Affichage Crontab et redémarrage de la modification
1. Afficher la liste des tâches d'exécution planifiées crontab
crontab -l
2. Modifiez crontab pour exécuter des tâches régulièrement
crontab -e
3. Supprimer les tâches planifiées crontab
crontab -r
4. Commandes associées :
sudo service crond start #启动服务
sudo service crond stop #关闭服务
sudo service crond restart #重启服务
sudo service crond reload #重新载入配置
sudo service crond status #查看服务状态
2. Syntaxe du format de base de Crontab
Expression temporelle de crontab :
基本格式 :
* * * * * command
分 时 日 月 周 命令
Regardons d’abord un exemple. Exécutez le programme de sauvegarde à 1h00 du matin tous les jours : 0 1 * * * /root/wzfou.com/backup.sh
. Parmi eux, /root/wzfou.com/backup.sh
est le chemin du script. Pour utiliser le chemin absolu, veuillez consulter la figure ci-dessous pour le format de date précédent.
Instance 1 : est exécuté toutes les minutes
* * * * * /root/wzfou.com/backup.sh
Instance 2 : Exécuter une fois toutes les heures les 3e et 15e minutes
3,15 * * * * /root/wzfou.com/backup.sh
Exemple 3 : Exécuter une fois par jour de 8h00 à 11h00 les 3e et 15e minutes
3,15 8-11 * * * /root/wzfou.com/backup.sh
Instance 4 : Exécuté tous les deux jours aux 3e et 15e minutes de 8h00 à 11h00
3,15 8-11 */2 * * /root/wzfou.com/backup.sh
Instance 5 : Exécuté tous les lundis de 8h00 à 11h00 aux 3ème et 15ème minutes
3,15 8-11 * * 1 /root/wzfou.com/backup.sh
Exemple 6 :Exécuter une fois par nuit à 21h30
30 21 * * * /root/wzfou.com/backup.sh
Instance 7 : Exécuter une fois par mois à 16h45 les 1er, 10 et 22
45 4 1,10,22 * * /root/wzfou.com/backup.sh
Exemple 8 :Exécuter une fois tous les samedis et dimanches à 13h10
10 1 * * 6,0 /root/wzfou.com/backup.sh
Instance 9 : exécuté toutes les 30 minutes entre 18h00 et 23h00, tous les jours
0,30 18-23 * * * /root/wzfou.com/backup.sh
Instance 10 : Exécuter une fois tous les samedis à 23h00
0 23 * * 6 /root/wzfou.com/backup.sh
Exemple 11 :Exécuter une fois toutes les heures
* */1 * * * /root/wzfou.com/backup.sh
Exemple 12 :Exécuté toutes les heures entre 23h00 tous les soirs et 7h00 le lendemain
* 23-7/1 * * * /root/wzfou.com/backup.sh
Exemple 13 : est exécuté le premier jour de chaque semaine (c'est-à-dire qu'il commence à minuit tous les dimanches soir).
@weekly /root/wzfou.com/backup.sh
Exemple 14 :Exécuter une fois le 15 de chaque mois.
0 11 15 * * /root/wzfou.com/backup.sh
Instance 15 : est exécuté une fois le premier jour de chaque mois (c'est-à-dire qu'il commence à 0h00 le 1er de chaque mois).
@monthly /root/wzfou.com/backup.sh
Instance 16 : est exécuté une fois au cours du mois spécifié (exécuté une fois chaque nuit à minuit en janvier, avril et juin).
0 0 * jan,apr,jun * /root/wzfou.com/backup.sh
Instance 17 : Exécuté une fois après le redémarrage.
@reboot /root/wzfou.com/backup.sh
Exemple 18 :Envoyer une notification par e-mail une fois la tâche planifiée exécutée.
MAILTO="raj" 1 1 * * * /root/wzfou.com/backup.sh
Exemple 19 : Spécifiez le shell (la valeur par défaut est /bin/bash)
SHELL=/bin/sh 1 1 * * * /root/wzfou.com/backup.sh
Instance 20 : spécifie les variables d'environnement.
PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /root/wzfou.com/backup.sh
4. Problèmes possibles avec Crontab
4.1 Crontab ne prend pas effet immédiatement
Votre tâche planifiée Crontab nouvellement créée devra attendre 2 minutes avant d'être exécutée après l'avoir enregistrée. Bien sûr, si vous souhaitez l'exécuter immédiatement, vous pouvez redémarrer Crontab. Lorsque crontab échoue, vous pouvez essayer /etc/init.d/crond restart pour résoudre le problème, ou consulter le journal pour voir si une tâche est exécutée/une erreur est signalée tail -f /var/log/cron.
4.2 Crontab ne s'exécute pas
Lorsque le chemin du fichier est impliqué dans le script, écrivez le chemin global. Après avoir mis à jour l'heure et le fuseau horaire du système, cron doit être redémarré. Lorsque l'exécution manuelle du script est OK, mais que la crontab ne s'exécute pas, il s'agit très probablement d'une variable d'environnement. Vous pouvez essayer d'introduire directement la variable d'environnement dans la crontab pour résoudre le problème, par exemple :
0 * * * * . /etc/profile;/bin/sh /root/wzfou.com/backup.sh
4.3 Crontab n'a pas l'autorisation d'exécuter
Faites attention à la planification des tâches au niveau du système et à la planification des tâches au niveau de l'utilisateur. Seuls l'utilisateur root et le propriétaire du fichier crontab peuvent exécuter -e, -l, -r et - v< Utilisez UserName après l'indicateur ept4> pour modifier, répertorier, supprimer ou vérifier le fichier crontab pour un utilisateur spécifié.
L'opération de planification des tâches de l'utilisateur root peut être définie via "crontab -uroot -e", ou les tâches planifiées peuvent être écrites directement dans le fichier /etc/crontab.
Pour modifier la crontab d'un autre utilisateur, exécutez la commande suivante en tant qu'utilisateur root. Le même format (ajoutez "-u username" à la fin de la commande) peut également être utilisé pour répertorier ou supprimer les crontabs.
crontab -u username -e
4.4 Notification après l'exécution de Crontab
Lorsque la tâche planifiée Crontab est exécutée à l'heure que vous spécifiez, le système vous enverra une lettre indiquant le contenu d'exécution du programme, qui peut être consulté dans le journal /var/log/cron. Si vous ne souhaitez pas recevoir une telle notification, veuillez ajouter > /dev/null 2>&1
après un espace dans chaque ligne.