La commande at a été introduite dans les articles précédents. Elle permet de mettre en place une tâche planifiée qui n'est exécutée qu'une seule fois. Aujourd'hui, examinons les tâches planifiées qui sont exécutées périodiquement. Au travail, des tâches planifiées périodiques sont souvent utilisées, telles que la sauvegarde régulière des fichiers système, la sauvegarde régulière des fichiers de base de données, le traitement des commandes non payées depuis longtemps, etc.
Les utilisateurs configurent des tâches planifiées périodiques crontab
Généralement, si les utilisateurs souhaitent configurer des tâches planifiées périodiques, ils doivent utiliser la commande crontab . Comme chez, crontab a également une liste noire et blanche, et les fichiers de configuration sont -/etc/cron.deny, /etc/cron.allow.
Lorsque l'utilisateur définit une tâche planifiée, la tâche sera enregistrée dans le répertoire /var/spool/cron sous forme de fichier texte.
# ll /var/spool/cron/ total 4 -rw------- 1 root root 98 Jul 28 03:58 root
À propos de crontab, nous n'avons besoin de retenir que deux commandes
crontab -e Configurer une tâche planifiée
crontab - l Afficher les tâches planifiées
Le format de définition des tâches planifiées est le suivant :
基本格式:分 时 日期 月份 星期 命令 取值范围:[0-59] [0-23] [1-31] [1-12] [0-7]
De plus, nous devons également nous souvenir de la signification de quelques caractères spéciaux :
* signifie que n'importe quelle heure peut être
, signifie des périodes de temps distinctes
- signifie un période de temps continue
/n signifie chaque n intervalle d'unité
Jetons un coup d'œil à l'utilisation des caractères spéciaux ci-dessus à travers quelques exemples :
# 每隔5分钟,执行下检测内存的脚本 */n * * * * /root/script/check_memory.sh # 每个月1号凌晨5点20分,重启下服务器 20 5 1 * * /usr/sbin/reboot
Fichiers de configuration système /etc/crontab, /etc/cron.d/*
Concernant les tâches périodiques planifiées, il existe trois principaux Les fichiers de configuration locaux sont
/var/spool/cron/, qui sont définis pour les utilisateurs. , qui sont définis pour les utilisateurs. Tâches planifiées du système
/etc/cron.d/ Pour les tâches planifiées d'un certain logiciel ou système, tel qu'un site Web, il peut y avoir plusieurs tâches planifiées. , il est donc recommandé de les exécuter dans / Dans le répertoire etc/cron.d/, créez un nouveau fichier de configuration
crontab -e est conçu pour le niveau utilisateur Pour le système. niveau tâches périodiques, il est recommandé de l'écrire dans le fichier /etc/ crontal, ou dans le répertoire /etc/cron.d/.
# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed # * * * * * root /usr/bin/date >> /root/cron.txt
Vous pouvez voir qu'il est légèrement différent de crontab -e Vous devez spécifier le nom d'utilisateur ici.
Ensuite, regardons quels fichiers se trouvent dans le répertoire /etc/cron.d/
# ll /etc/cron.d total 8 -rw-r--r--. 1 root root 128 Aug 3 2017 0hourly -rw------- 1 root root 235 Aug 3 2017 sysstat
Supposons qu'il y ait un site Web sur le serveur. Pour ce site Web, nous devons régulièrement le faire. sauvegardez la base de données. Les fichiers du site Web doivent également traiter certaines données régulièrement, nous pouvons alors créer un fichier associé dans le répertoire /etc/cron.d/. Jetons un coup d'œil au contenu du fichier 0hourly :
# Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
Ce script consiste à exécuter le fichier de script dans le répertoire /etc/cron.hourly toutes les heures.
Je suppose que des amis aux yeux perçants ont découvert qu'en plus du répertoire cron.hourly, il existe également des répertoires cron.daily, cron.monthly et cron.weekly. Mais il existe encore quelques différences entre ces trois répertoires. Ces trois répertoires sont exécutés par anacron. Cet anacron signifie réveiller la tâche planifiée non exécutée et l'exécuter. Par exemple, lorsque vous utilisez crontab -e pour configurer une tâche planifiée et que la tâche n'est pas exécutée après le délai en raison d'un arrêt ou pour d'autres raisons, vous ne pouvez que la manquer, mais si vous placez le script dans /etc/cron Dans le répertoire .daily/, tant qu'il n'est pas exécuté, il sera quand même exécuté même si le temps est écoulé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!