Crontab - Si vous avez actuellement un site Web lourd, vous envisagez peut-être d'exécuter certains processus, comme enrichir des données ou générer des miniatures en arrière-plan, sans interférer avec l'interface utilisateur. Eh bien, Linux crontab a un bon programme qui fait exactement cela: Cron.

Une introduction à Cron

Alors, quel est ce programme? Cron est classé comme un démon qui peut exécuter des commandes planifiées. Il démarre automatiquement lors de la saisie des niveaux d'exécution multi-utilisateurs, à partir de /etc/init.d. Il recherche dans la zone de spoule dans / var / spool / cron / crontabs les fichiers crontab nommés d'après les comptes dans / etc / passwd. Pour accéder aux crontabs de ce répertoire, vous devez utiliser la commande crontab au lieu d'y accéder directement. Cron peut également lire le format légèrement différent de / etc / crontab, ainsi que les fichiers dans /etc/cron.d.

Une fois configuré, Cron se réveille chaque minute, examine les crontabs linux stockés et vérifie la commande pour voir s'il y a quelque chose à exécuter. Si une commande est exécutée et qu'une sortie est générée, la sortie est ensuite envoyée au propriétaire de la crontab ou à l'utilisateur dans la variable MAILTO de la crontab. Les copies enfants du cron qui exécute ces processus sont nommées en majuscules, que vous verrez dans la sortie ps et syslog.

Cron vérifie également toutes les minutes les changements dans le modtime du répertoire spool. S'il y a des changements, il examine alors le temps de modification de tous les crontabs linux et recharge ceux qui ont changé. Par conséquent, cron n'a pas besoin de redémarrer lorsqu'un fichier crontab est modifié.

Lorsque l'horloge est modifiée de trois heures ou moins, des considérations spéciales existent comme au début et à la fin de l'heure d'été. Si l'heure avance, les travaux devant avoir été exécutés dans le temps ignoré seront modifiés pour s'exécuter peu de temps après la modification. À l'opposé, si le temps recule, les travaux qui tombent dans le temps répété ne seront pas réexécutés.

Seuls les travaux qui s'exécutent à une heure spécifique plutôt que les travaux horaires ou ceux marqués d'un '*' dans le spécificateur de minutes / heures sont affectés. Les travaux spécifiés avec des voitures sauvages sont immédiatement exécutés en fonction de la nouvelle heure. En cas de changement d'horloge de plus de trois heures, la nouvelle heure est immédiatement utilisée.

Dans Red Hat et Debian, cron traite les fichiers cron.d comme des extensions du fichier crontab linux car ils suivent le format spécial du fichier, ce qui signifie qu'ils incluent le champ utilisateur. Cette fonctionnalité vise à autoriser les packages qui nécessitent un contrôle de planification plus fin que les répertoires quotidiens, mensuels ou hebdomadaires. Ces fichiers devraient idéalement être nommés d'après leurs packages de fournisseurs. Les fichiers doivent être conformes à la convention de dénomination utilisée pour les parties d'exécution, en ce sens qu'ils doivent uniquement être composés de lettres majuscules et minuscules, de chiffres, de tirets et de traits de soulignement. Les fichiers du répertoire cron.d sont surveillés pour les changements, tout comme le répertoire linux crontab. Pour les commandes comme / bin / ls, assurez-vous d'utiliser des noms de chemin absolus pour appeler la bonne commande.

Une introduction à Linux Crontab

Maintenant que vous connaissez les tenants et aboutissants de cron, regardons de près linux crontab, qui est un programme pour installer, désinstaller ou lister les tables pour piloter le démon lui-même. Chaque utilisateur peut avoir sa propre crontab linux et les fichiers sont disponibles dans le répertoire crontabs, mais ne sont pas destinés à une édition directe.

Toute commande donnée dans une crontab linux d'un utilisateur sera exécutée en tant qu'utilisateur le possédant. Les tabulations, les espaces de début et les lignes vides sont généralement ignorés. Les lignes qui ont un signe de hachage comme premier caractère non-espace sont ignorées car elles sont traitées comme des commentaires. Il convient de noter que les commentaires ne sont pas autorisés dans les mêmes lignes de commandes cron car ils seront lus dans le cadre de la commande. Sur une note similaire, les commentaires ne sont également pas autorisés sur les lignes avec des paramètres de variable d'environnement.

Dans une crontab linux, une ligne active avec une commande cron ou un paramètre de variable d'environnement, qui se présente sous la forme «nom = valeur», où des espaces peuvent être ajoutés si nécessaire autour du signe égal. Tous les espaces non principaux suivants font partie de la valeur du nom. La chaîne de valeur peut être placée entre guillemets simples ou doubles pour conserver les espaces vides de fin ou de début. Il n'est pas analysé pour les substitutions environnementales, vous pouvez donc constater que des lignes comme «PATH = $ HOME / bin: $ PATH» ne fonctionneront pas comme prévu.

De nombreux paramètres environnementaux sont automatiquement configurés par cron, comme HOME et LOGNAME étant définis à partir de la ligne de mot de passe de l'utilisateur et SHELL étant défini sur / bin / sh et PATH étant défini sur / usr / bin: / bin. Vous pouvez remplacer PATH, SHELL et HOME par les paramètres crontab. LOGNAME ne peut cependant pas être modifié, car c'est l'utilisateur à partir duquel le travail est exécuté. Sur les systèmes BSD, cette variable peut être appelée USER, auquel cas USER sera également définie.

Si l'envoi de mails fait partie des commandes en cours d'exécution dans la crontab linux, cron examinera également MAILTO. Si la variable est définie et non vide, un mail est envoyé à l'utilisateur nommé. Mais s'il est vide, aucun courrier n'est envoyé et un courrier est envoyé au propriétaire de Linux crontab. Si le fichier cron.allow est disponible, vous devez y être répertorié pour utiliser cette commande. Si ce fichier n'existe pas mais qu'un fichier cron.deny existe, vous devez être supprimé de ce fichier pour utiliser la commande. Si aucun fichier n'existe, seul le super utilisateur pourra utiliser la commande en fonction des paramètres dépendants du site. Alternativement, tous les utilisateurs pourront utiliser la commande, ce qui est le cas pour les systèmes Debian standard.

Si l'option –u est disponible, elle donne le nom d'utilisateur dont le crontab linux doit être modifié. Sinon, crontab examine la crontab de l'utilisateur exécutant la commande. Il est important d'utiliser toujours cette option pour des raisons de sécurité lors de l'exécution à l'intérieur de su, car linux crontab peut être confondu par su. L'option -l est disponible pour que la crontab actuelle soit affichée sur la sortie standard, tandis que l'option -r supprime la crontab actuelle. La commande -e est utilisée pour éditer la crontab linux actuelle à l'aide des éditeurs spécifiés par les variables d'environnement EDITOR ou VISUAL. Vous ne pouvez utiliser aucun éditeur qui dissocie et recrée le fichier; vous avez besoin d'un éditeur qui édite le fichier en place. Après avoir quitté l'éditeur, le crontab linux modifié sera automatiquement installé.

Le module pam_env est également supporté par cron sur le système Debian GNU / Linux, chargeant l'environnement comme spécifié dans le fichier du module. Cependant, il convient de noter que le paramètre PAM ne remplace pas les paramètres mentionnés ci-dessus ou les paramètres du fichier crontab. Si vous voulez un CHEMIN différent de l'emplacement du bac, vous devez le configurer dans le fichier crontab. Cron enverra, par défaut, des e-mails en utilisant le type de contenu 'text / plain' avec le jeu de paramètres de caractères défini sur le jeu de codes / carte de caractères des paramètres régionaux où le cron a démarré, qui est les paramètres régionaux par défaut du système sans aucun jeu de variables d'environnement ou les paramètres régionaux configurés par les variables. Vous pouvez ajouter vos propres encodages de caractères pour la sortie de courrier en définissant les variables «Content_Transfer_Encoding» et «Content_Type» dans les crontabs pour faire correspondre les en-têtes de courrier des noms.

Cours recommandés

  • Cours en ligne sur les techniques R Studio Anova
  • Formation de certification en AngularJS
  • Cours de certification ISTQB niveau 1
  • Formation de certification aux principes fondamentaux des tests de logiciels

Travailler sur Crontab

La commande crontab, trouvée dans les systèmes d'exploitation Unix et Unix, est accessible via un terminal. Pour voir ce que crontab exécute actuellement, ouvrez un terminal sur votre système et exécutez la commande suivante:

$ sudo crontab -l

Pour modifier les listes de travaux crontab, vous pouvez utiliser la commande suivante:

$ sudo crontab -e

Cette commande ouvre l'éditeur par défaut de votre système, qui pourrait être pico ou vio, pour modifier la crontab. Pour enregistrer le travail crontab sur votre fichier crontab, enregistrez et quittez l'éditeur. Les tâches ou les tâches cronab peuvent être écrites comme suit:

* * * * * /bin/execute/this/script.sh

Il y a cinq astérisques dans la commande ci-dessus, chacun représentant différentes parties de date pour planifier le travail. Les voici:

  1. Minute, allant de zéro à 59
  2. Heure, allant de zéro à 23
  3. Jour du mois, allant de un à 31
  4. Mois, allant de un à 12
  5. Jour de la semaine, allant de zéro à six, zéro signifiant dimanche

La liste ci-dessus a été donnée dans l'ordre, vous devez donc définir la minute en premier, suivie de l'heure, du jour du mois, du mois et du jour de la semaine. Vous pouvez conserver l'astérisque si vous ne souhaitez définir aucun champ, mais il est important de noter que le symbole signifie «tous». Si vous laissez les cinq champs non définis avec les astérisques intacts, cela signifie chaque minute de chaque heure, chaque jour de chaque semaine et chaque mois.

Supposons maintenant que vous vouliez simplement exécuter un script tous les midis un dimanche, voici ce que vous faites:

0 12 * * 0 /bin/execute/this/script.sh

Maintenant, le script est exécuté lorsque l'horloge système atteint 1200 heures chaque dimanche, chaque semaine de chaque mois. Maintenant, si vous voulez exécuter le script tous les jours ouvrables à midi, voici ce que vous écrivez:

0 12 * * 1-5 /bin/execute/this/script.sh

Le cron exécute des commandes lorsque les champs année, mois, heure et minute correspondent à l'heure actuelle ou quand au moins le jour du mois et de l'année correspondent à l'heure actuelle. Un champ peut être marqué d'un astérisque pour indiquer «premier-dernier». Les plages de numéros sont autorisées, les plages étant deux nombres séparés par un tiret. La plage spécifique est inclusive, donc une plage de 8 à 11 pour les «heures» spécifie l'exécution aux huitième, neuvième, dixième et onzième heures. Les listes sont également prises en charge, chaque nombre étant séparé par des virgules, comme «1, 2, 8, 9». Vous pouvez également mélanger et assortir, ce qui pourrait être «1, 2, 8-11».

Vous pouvez utiliser des valeurs de pas conjointement avec les plages, le «/» après une plage spécifiant un saut de la valeur du nombre dans la plage. Par exemple, «0-11 / 2» dans le champ des heures spécifie l'exécution des commandes toutes les deux heures, qui serait écrite comme une liste comme ceci: «0, 2, 4, 6, 8, 10». Des étapes peuvent être autorisées après un astérisque, comme «* / 2» pour indiquer une commande à exécuter toutes les deux heures. Pour les champs jour et mois, vous pouvez utiliser les trois premières lettres de ce jour ou mois particulier, et la casse n'a pas d'importance. Cependant, les listes et les plages de noms ne sont pas prises en charge. Le jour d'exécution peut être spécifié dans deux champs: le jour de la semaine et le jour du mois. Si les deux champs sont restreints, la commande s'exécute lorsque l'un des champs correspond.

Le reste de la ligne est le «sixième» champ, qui spécifie la commande à exécuter. La partie commande de la ligne prend jusqu'à une nouvelle ligne ou jusqu'à% caractère. Il est exécuté par sh ou par le shell spécifié dans la variable SHELL du fichier crontab. Le% dans la commande sera changé en caractères de nouvelle ligne à moins qu'ils ne soient échappés avec la barre oblique inverse '\'. Toutes les données après le premier signe% sont envoyées comme entrée standard à la commande. Vous ne pouvez pas diviser une ligne de commande en plusieurs lignes.

Planification des astuces sur Crontab

Le formatage peut prendre un certain temps pour s'y habituer, mais voici quelques astuces pour vous aider. Si vous souhaitez exécuter un cronjob toutes les dix minutes, vous pouvez soit l'écrire de cette façon:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Ou vous pouvez l'écrire de cette façon, ce qui est plus simple:

* / 10 * * * * /bin/execute/this/script.sh

Vous avez également des mots spéciaux que vous pouvez ajouter pour le champ de première minute au lieu d'un nombre, comme ceci:

  • @reboot: cela exécuterait le script une fois au démarrage du système
  • @yearly: pour exécuter la commande une fois par an (le format alternatif serait "0 0 1 1 *")
  • @annually: une alternative au mot-clé annuel
  • @monthly: pour exécuter la commande une fois par mois ("0 0 1 * *")
  • @weekly: à exécuter une fois par semaine ("0 0 * * 0")
  • @daily: à exécuter une fois par semaine ("0 0 * * *")
  • @midnight: une alternative au mot-clé quotidien
  • @hourly: pour exécuter toutes les heures ("0 * * * *")

Stockage de sortie

Par défaut, le cron enregistre la sortie du travail dans la boîte aux lettres ou racine de l'utilisateur. Mais vous pouvez rendre la sortie plus simple et plus présentable en l'enregistrant dans un fichier journal distinct. Voici comment procéder:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux est capable de générer des rapports à différents niveaux. Vous avez des erreurs standard STDERR et la sortie standard STDOUT, marquées respectivement 2 et 1. L'instruction suivante indique de stocker les deux STDERR et STDOUT, pour créer un seul flux de données de messages et d'erreurs:

2> & 1

Nous avons donc défini le flux de sortie, nous devons maintenant lui donner une destination. Le '>' écrase le fichier et '>>' lui est ajouté. Pour l'ajout, qui est toujours plus sûr, vous pouvez utiliser la commande suivante:

>> /var/log/script_output.log

Conclusion

Comme vous pouvez le voir, cron vous permet de définir des tâches à exécuter automatiquement à intervalles réguliers en arrière-plan. Cela permet la création automatisée de sauvegardes, la planification des mises à jour, la synchronisation des fichiers et bien plus encore. Vous pouvez faire tout cela et plus encore avec crontab.

Articles recommandés: -

Voici quelques articles qui vous aideront à obtenir plus de détails sur Linux Crontab, il vous suffit donc de parcourir le lien.

  1. Questions et réponses d'entrevue Linux | Utile et le plus demandé
  2. Carrières sous Linux
  3. Top 10 des applications Linux utiles pour les administrateurs système
  4. Linux contre Windows 10