Maison > Article > Tutoriel système > La planification des tâches sous Linux est divisée en deux types de services crontab utilisateur
Émettez d'abord la commande :
1. Format de commande :
fichier crontab[-user]
crontab[-user][-e|-l|-r]
2. Fonction de commande :
Grâce à la commande crontab, nous pouvons exécuter des commandes système spécifiées ou des scripts shellscript à intervalles fixes. L'unité d'intervalle de temps peut être des minutes, des heures, des jours, des mois, des semaines ou toute combinaison de ces valeurs. Cette commande est particulièrement adaptée à l'analyse périodique des journaux ou à la sauvegarde des données.
3. Paramètres de commande :
-user : utilisé pour définir le service crontab d'un certain utilisateur. Par exemple, "-uixdba" signifie définir le service crontab de l'utilisateur ixdba. Ce paramètre est généralement exécuté par l'utilisateur root.
file : file est le nom du fichier de commandes, ce qui signifie que ce fichier est utilisé comme fichier de liste de tâches de crontab et chargé dans crontab. Si ce fichier n'est pas spécifié sur la ligne de commande, la commande crontab acceptera les commandes saisies sur l'entrée standard (souris) et les chargera dans crontab.
-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 certain 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 du répertoire /var/spool/cron Si aucun utilisateur n'est spécifié, le fichier crontab de l'utilisateur actuel sera supprimé par défaut.
-i : donnez une invite de confirmation lors de la suppression du fichier crontab de l'utilisateur.
Plus de détails :
1. Introduction au crond
crond est un processus démon utilisé sous Linux pour effectuer périodiquement certaines tâches ou attendre le traitement d'incidents individuels. Il est similaire aux tâches planifiées sous Windows. Lorsque le système d'exploitation est installé, cet outil de service sera installé par défaut et sera démarré manuellement. . Le processus crond. Le processus crond détectera régulièrement s'il y a des tâches à exécuter chaque minute. S'il y a des tâches à exécuter, les tâches seront exécutées manuellement.
La planification des tâches sous Linux est divisée en deux catégories, la planification des tâches système et la planification des tâches utilisateur.
Planification des tâches système : tâches que le système effectue périodiquement, telles que l'écriture de données mises en cache sur le disque dur, l'effacement des journaux, etc. Il existe un fichier crontab dans le répertoire /etc, qui est le fichier de configuration pour la planification des tâches système.
Le fichier/etc/crontab comprend les lignes suivantes :
[root@localhost~]#cat/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""ACCUEIL=/
#run-parts
51****rootrun-parts/etc/cron.hourly
247***rootrun-parts/etc/cron.daily
224**0rootrun-parts/etc/cron.weekly
4241**rootrun-parts/etc/cron.monthly
[root@localhost~]#
Les quatre premières lignes sont utilisées pour configurer les variables d'environnement pour exécuter la tâche crond. La variable SHELL dans la première ligne spécifie le shell que le système utilisera. Voici bash. La variable PATH dans la deuxième ligne spécifie le chemin du système. pour exécuter la commande. La variable MAILTO dans la troisième ligne Les informations d'exécution de tâche spécifiées par crond seront envoyées à l'utilisateur root par email. Si la valeur de la variable MAILTO est vide, cela signifie que les informations d'exécution de tâche ne seront pas envoyées. à l'utilisateur. La variable HOME dans la quatrième ligne spécifie la valeur utilisée lors de l'exécution du répertoire personnel de la commande ou du script. Le sens exprimé par les lignes six à neuf sera développé dans la section suivante. Pas grand chose à dire ici.
Planification des tâches utilisateur : tâches que les utilisateurs doivent effectuer régulièrement, telles que la sauvegarde des données utilisateur, les rappels réguliers par e-mail, etc. Les utilisateurs peuvent utiliser l'outil crontab pour personnaliser leurs propres tâches planifiées. Tous les fichiers crontab définis par l'utilisateur sont enregistrés dans le répertoire /var/spool/cron. Son nom de fichier est cohérent avec le nom d'utilisateur.
Fichier des autorisations utilisateur :
Fichier :
/etc/cron.deny
Description :
Les utilisateurs répertoriés dans ce fichier ne sont pas autorisés à utiliser la commande crontab
Fichier :
/etc/cron.allow
Description :
Les utilisateurs répertoriés dans ce fichier sont autorisés à utiliser la commande crontab
Fichier :
/var/spool/cron/
Description :
Le répertoire dans lequel tous les fichiers crontab de l'utilisateur sont stockés porte le nom du nom d'utilisateur
La signification du fichier crontab :
Dans le fichier crontab créé par l'utilisateur, chaque ligne représente une tâche et chaque tableau de chaque ligne représente un paramètre. Son format est divisé en six tableaux. Les cinq premières sections sont des sections de réglage de l'heure et la sixième section est la commande. segment à exécuter, le format est le suivant :
minuteheurejourmoissemainecommande
Parmi eux :
minute : représente la minute, qui peut être n'importe quel nombre entier compris entre 0 et 59.
heure : représente l'heure, qui peut être n'importe quel nombre entier compris entre 0 et 23.
jour : représente la date, qui peut être n'importe quel nombre entier compris entre 1 et 31.
mois : indique le mois, qui peut être n'importe quel nombre entier compris entre 1 et 12.
week : indique le jour de la semaine, qui peut être n'importe quel nombre entier compris entre 0 et 7, où 0 ou 7 représente le dimanche.
commande : La commande à exécuter peut être une commande système ou un fichier script compilé par vous-même.
Dans chacun des tableaux ci-dessus, les caractères spéciaux suivants peuvent également être utilisés :
Astérisque (*) : représente toutes les valeurs possibles. Par exemple, si le tableau mois est un astérisque, cela signifie que l'opération de commande sera exécutée chaque mois une fois les conditions de blocage des autres tableaux remplies.
Colon (,) : vous pouvez utiliser des valeurs séparées par deux-points pour spécifier une plage de liste, par exemple "1,2,5,7,8,9"
Zhongdong (-) : Vous pouvez utiliser une barre moyenne entre les nombres entiers pour représenter une plage d'entiersLes tâches planifiées Linux ne sont pas exécutées, par exemple, "2-6" signifie "2,3,4,5,6"
Barre oblique (/) : vous pouvez utiliser une barre oblique pour spécifier la fréquence de l'intervalle de temps. Par exemple, "0-23/2" signifie une exécution toutes les deux heures. Dans le même temps, les barres obliques peuvent être utilisées avec des astérisques, tels que */10. Si elles sont utilisées dans le tableau des minutes, cela signifie qu'elles seront exécutées toutes les dix minutes.
2. service crond
Installer crontab :
miaminstallercrontabs
Instructions de fonctionnement du service :
/sbin/servicecrondstart//Démarrer le service
/sbin/servicecrondstop//Désactivez le service
/sbin/servicecrondrestart//Redémarrer le service
/sbin/servicecrondreload//Recharger la configuration
Vérifiez l'état du service crontab :
statut du servicecrond
Démarrer automatiquement le service crontab :
servicecrondstart
Vérifiez si le service crontab a été configuré pour démarrer au démarrage, exécutez la commande :
ntsysv
Ajouter le démarrage manuel au démarrage :
chkconfig–level35crondon
3. Interprétation de la commande crontab
1. Format de commande :
fichier crontab[-user]
crontab[-user][-e|-l|-r]
2. Fonction de commande :
Grâce à la commande crontab, nous pouvons exécuter des commandes système spécifiées ou des scripts shellscript à intervalles fixes. L'unité d'intervalle de temps peut être des minutes, des heures, des jours, des mois, des semaines ou toute combinaison de ces valeurs. Cette commande est particulièrement adaptée à l'analyse périodique des journaux ou à la sauvegarde des données.
3. Paramètres de commande :
-user : utilisé pour définir le service crontab d'un certain utilisateur. Par exemple, "-uixdba" signifie définir le service crontab de l'utilisateur ixdba. Ce paramètre est généralement exécuté par l'utilisateur root.
file : file est le nom du fichier de commandes, ce qui signifie que ce fichier est utilisé comme fichier de liste de tâches de crontab et chargé dans crontab. Si ce fichier n'est pas spécifié sur la ligne de commande, la commande crontab acceptera les commandes saisies sur l'entrée standard (souris) et les chargera dans crontab.
-e : Modifiez le contenu du fichier crontab d'un utilisateur. Si vous ne spécifiez pas d'utilisateur, cela signifie modifier le fichier crontab de l'utilisateur actuel.
-l : Afficher le contenu du fichier crontab d'un certain 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 du répertoire /var/spool/cron Si aucun utilisateur n'est spécifié, le fichier crontab de l'utilisateur actuel sera supprimé par défaut.
-i : donnez une invite de confirmation lors de la suppression du fichier crontab de l'utilisateur.
4. Méthodes couramment utilisées :
1).Créez un nouveau fichier crontab
Avant d'envisager de soumettre un fichier crontab au processus cron, la première chose à faire est de définir la variable d'environnement EDITOR. Le processus cron l'utilise pour déterminer quel éditeur utiliser pour modifier le fichier crontab. 99% des utilisateurs UNIX et LINUX utilisent vi. Si c'est votre cas, alors vous éditez le fichier .profile dans le répertoire $HOME La tâche planifiée Linux n'est pas exécutée et vous y ajoutez cette ligne :
EDITOR=vi;exportEDITOR
Enregistrez et quittez ensuite. Autant créer un fichier appelé cron, où se trouve le nom d'utilisateur, par exemple davecron. Ajoutez le contenu suivant à ce fichier.
#(mettez vos propres initiales ici)répercutez la date sur la console chaque
#15minutes entre 18h et 6h du matin
0,15,30,4518-06***/bin/echo'date'>/dev/console
Enregistrez et quittez. Assurez-vous que les 5 champs suivants sont séparés par des espaces.
Dans l'exemple précédent, le système affichera l'heure actuelle sur la console toutes les 15 minutes. Si le système tombe en panne ou se bloque, vous pouvez savoir en un coup d'œil quand le système a cessé de fonctionner depuis la dernière fois affichée. Dans certains systèmes, tty1 est utilisé pour représenter la console, et les exemples à l'intérieur peuvent être modifiés en conséquence en fonction de la situation réelle. Afin de soumettre le fichier crontab que vous venez de créer, vous pouvez utiliser ce fichier nouvellement créé comme paramètre de la commande cron :
$crontabdavecron
Le fichier a maintenant été soumis au processus cron, qui s'exécutera toutes les 15 minutes.
En même temps, une copie du fichier nouvellement créé a été placée dans le répertoire /var/spool/cron, et le nom du fichier est le nom d'utilisateur (c'est-à-dire Dave).
2). Liste des fichiers crontab
Pour énumérer les fichiers crontab, vous pouvez utiliser :
$crontab-l
0,15,30,45,18-06***/bin/echo`date`>dev/tty1
Vous verrez un contenu similaire au précédent. Vous pouvez utiliser ces méthodes pour faire une sauvegarde du fichier crontab dans le répertoire $HOME :
$crontab-l>$HOME/mycron
De cette façon, une fois le fichier crontab supprimé accidentellement, il peut être rapidement restauré en utilisant la méthode décrite dans la section précédente.
3).Modifier le fichier crontab
Si vous souhaitez ajouter, supprimer ou modifier des entrées dans le fichier crontab et que la variable d'environnement EDITOR est définie sur vi, vous pouvez utiliser vi pour modifier le fichier crontab. La commande correspondante est :
$crontab-e
Vous pouvez modifier le fichier crontab et quitter comme vous le feriez pour n'importe quel autre fichier avec vi. Si des entrées individuelles sont modifiées ou si de nouvelles entrées sont ajoutées, cron effectuera les vérifications d'intégrité nécessaires sur le fichier lors de son enregistrement. Si une valeur dans l'un des champs dépasse la plage autorisée, il vous le demandera.
Lorsque nous modifions le fichier crontab, nous pouvons ajouter de nouvelles entrées. Par exemple, ajoutez ce qui suit :
#DT : supprimer les fichiers de base, à 3h30 les 1,7,14,21,26,26jours de chaque mois
3031,7,14,21,26**/bin/find-name"core'-execrm{};
Enregistrez et quittez maintenant. Il est préférable d'ajouter un commentaire à chaque entrée du fichier crontab afin que vous connaissiez sa fonction, sa durée d'exécution et, plus important encore, de quel utilisateur il s'agit.
Utilisons maintenant la commande crontab-l mentionnée ci-dessus pour lister toutes ses informations :
$crontab-l
#(crondaveinstalledonTueMay413:07:431999)
#DT : echelle la date sur la console toutes les 30 minutes
0,15,30,4518-06***/bin/echo`date`>/dev/tty1
#DT : supprimer les fichiers de base, à 3h30 les 1,7,14,21,26,26jours de chaque mois
3031,7,14,21,26**/bin/find-name"core'-execrm{};
4).Supprimer le fichier crontab
Pour supprimer le fichier crontab, vous pouvez utiliser :
$crontab-r
5).Récupérer les fichiers crontab perdus
Si vous supprimez accidentellement le fichier crontab, en supposant que vous ayez une sauvegarde dans votre répertoire $HOME, vous pouvez le copier dans /var/spool/cron/, où se trouve le nom d'utilisateur. Si la copie ne peut pas être complétée en raison de problèmes d'autorisation, vous pouvez utiliser :
$crontab
Parmi eux, se trouve le nom de fichier de votre copie dans le répertoire $HOME.
Je vous recommande de sauvegarder une copie de ce fichier dans votre répertoire $HOME. J'ai eu une expérience similaire et j'ai supprimé le fichier crontab plusieurs fois (car la touche r est immédiatement à gauche de la touche e). C'est pourquoi certaines documentations système recommandent de ne pas éditer directement le fichier crontab, mais d'éditer une copie du fichier puis de soumettre à nouveau le nouveau fichier.
Certaines variantes de crontab sont un peu bizarres, alors soyez prudent lorsque vous utilisez les commandes crontab. Si des options sont omises, crontab peut ouvrir un fichier vide ou apparaître comme un fichier vide. À ce stade, appuyez sur la touche Suppr pour quitter. N'appuyez pas dessus, sinon vous perdrez le fichier crontab.
5. Exemples d'utilisation
Exemple 1 : Exécuter la commande toutes les 1 minute
Commande :
commande *****
Exemple 2 : Exécution à la 3ème et à la 15ème minute de chaque heure
Commande :
Commande 3,15****
Instance 3 : Exécuté aux 3ème et 15ème minutes de 20h à 23h
Commande :
3,158-11***commande
Exemple 4 : Exécuté aux 3ème et 15ème minutes de 8h à 11h tous les sept jours
Commande :
3,158-11*/2**commande
Exemple 5 : Exécution à la 3ème et 15ème minutes de 8h à 11h tous les lundis
Commande :
3,158-11**1commande
Exemple 6 : Redémarrer PME à 21h30 du soir
Commande :
3021***/etc/init.d/smbrestart
Instance 7 : Redémarrez PME à 16h45 les 1er, 10 et 22 de chaque mois
Commande :
4541,10,22**/etc/init.d/smbrestart
Exemple 8 : Redémarrez PME à 1h10 tous les samedis et dimanches
Commande :
101**6,0/etc/init.d/smbrestart
Instance 9 : Redémarrez smb toutes les 30 minutes entre 18h00 et 23h00 tous les soirs
Commande :
0,3018-23***/etc/init.d/smbrestart
Exemple 10 : Redémarrez PME à 23h00 tous les samedis
Commande :
023**6/etc/init.d/smbrestart
Exemple 11 : Redémarrez smb toutes les heures
Commande :
**/1***/etc/init.d/smbrestart
Exemple 12 : Redémarrez smb toutes les heures entre 11h et 19h
Commande :
*23-7/1***/etc/init.d/smbrestart
Exemple 13 : Redémarrez PME le 4 de chaque mois et à 11 heures du lundi au vendredi
Commande :
0114*mon-wed/etc/init.d/smbrestart
Exemple 14 : Redémarrer PME à 4 heures le 1er octobre
Commande :
041jan*/etc/init.d/smbrestart
Exemple 15 : Exécuter le script dans le répertoire /etc/cron.hourly toutes les heures
Commande :
01****rootrun-parts/etc/cron.hourly
Description :
run-parts est le paramètre. Si vous supprimez ce paramètre, vous pouvez écrire le nom d'un script à exécuter à la place du nom du répertoire
4. Précautions d'emploi
1. Faites attention aux variables d'environnement
Parfois, nous créons une crontab, et cette tâche est difficile à effectuer manuellement, mais il n'y a aucun problème pour automatiser cette tâche. Ces situations sont généralement causées par des variables d'environnement non configurées dans le fichier crontab.
Lors de la définition de plusieurs tâches de planification dans un fichier crontab, un problème qui nécessite une grande attention est la définition des variables d'environnement, car lorsque nous exécutons automatiquement une tâche, elle est effectuée dans l'environnement shell actuel. et Lorsque le système effectue manuellement la planification des tâches, il ne chargera aucune variable d'environnement. Pour cette introduction au système d'exploitation Linux, vous devez spécifier toutes les variables d'environnement requises pour l'exécution de la tâche dans le fichier crontab. aucun problème lorsque le système effectue la planification des tâches.
Ne présumez pas que cron connaît les circonstances particulières requises, il ne semble pas le faire. Vous devez donc vous assurer de fournir tous les chemins et variables d'environnement nécessaires dans le script shell, et pas seulement certaines variables globales définies manuellement. Faites donc attention aux 3 points suivants :
1) Lorsque le chemin du fichier est impliqué dans le script, écrivez le chemin global ;
2) Lorsque l'exécution du script nécessite Java ou d'autres variables d'environnement, introduisez les variables d'environnement via la commande source, telles que :catstart_cbp.sh
#!/bin/sh
source/etc/profil
exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh-cmev&
3) Lorsque l'exécution automatique du script est OK, mais que la crontab n'est pas exécutée. À ce stade, vous devez hardiment soupçonner que les variables d'environnement sont à blâmer, et vous pouvez essayer d'introduire directement des variables d'environnement dans crontab pour résoudre le problème. Tel que :
0****./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh
2. Faites attention à effacer les journaux de courrier électronique des utilisateurs du système
Une fois l'exécution de chaque tâche planifiée, le système enverra les informations de sortie de la tâche à l'utilisateur actuel du système par courrier électronique. Au fil du temps, les informations du journal seront extrêmement volumineuses, ce qui peut affecter le fonctionnement normal du système. Le blog d'exploitation et de maintenance Linux sera Il est très important de rediriger chaque tâche.
Par exemple, vous pouvez définir la méthode suivante dans le fichier crontab pour ignorer la sortie du journal :
0*/3***/usr/local/apache2/apachectlrestart>/dev/null2>&1
"/dev/null2>&1" signifie d'abord rediriger la sortie standard vers /dev/null, puis rediriger l'erreur standard vers la sortie standard. Parce que la sortie standard a déjà été redirigée vers /dev/null, l'erreur standard. sera également redirigé vers /dev/null afin que le problème de sortie du journal soit résolu.
3. Planification des tâches au niveau du système et planification des tâches au niveau de l'utilisateur
La planification des tâches au niveau du système termine principalement certaines opérations de maintenance du système, et la planification des tâches au niveau de l'utilisateur termine principalement certaines tâches définies par l'utilisateur. La planification des tâches au niveau de l'utilisateur peut être effectuée dans la planification des tâches au niveau du système (non recommandé), et vice-versa. versa. Mais non, l'opération de planification des tâches de l'utilisateur root peut être définie via "crontab-uroot-e", ou la tâche de planification peut être écrite directement dans le fichier /etc/crontab. définir une tâche pour redémarrer régulièrement le système. La tâche doit être placée dans le fichier /etc/crontab, bien que la création d'une tâche pour redémarrer régulièrement le système sous l'utilisateur root soit également invalide.
4. Autres questions nécessitant une attention particulière
La tâche cron nouvellement créée ne sera pas exécutée immédiatement, son exécution prendra au moins 2 minutes. Si cron est redémarré, il sera exécuté immédiatement.
Lorsque crontab échoue soudainement, vous pouvez essayer /etc/init.d/crondrestart pour résoudre le problème. Ou vérifiez le journal pour voir si un travail est exécuté/signalez une erreur tail-f/var/log/cron.
Ne lancez jamais crontab-r au hasard. Il supprime les fichiers Crontab de l'utilisateur du répertoire Crontab (/var/spool/cron). Après avoir supprimé toutes les crontabs de cet utilisateur, elles ont disparu.
% a une signification particulière dans crontab, qui signifie saut de ligne. Si vous souhaitez l'utiliser, vous devez utiliser le caractère générique %. Par exemple, la date couramment utilisée '+%Y%m%d' ne sera pas exécutée dans crontab et doit être remplacée par la date '+%Y%m%. d'.
Nouvelle description : vérifiez l'enregistrement du journal vim-f/var/log/cron, qui est le chemin du journal des tâches planifiées vim, pour vérifier si le servicecrondstatus est activé pour la tâche planifiée
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!