Commandes Crontab. Qu’est-ce que CRON et comment le configurer correctement ? Installer Crontab à partir d'un fichier Cron

Les administrateurs système et les utilisateurs ordinaires doivent souvent automatiser diverses tâches de maintenance et de travail avec Linux à l'aide de scripts. C'est très pratique, il vous suffit d'exécuter le script et il fait tout ce dont il a besoin sans votre intervention. La prochaine étape de ce parcours consiste à configurer le bon script pour qu'il s'exécute automatiquement au bon moment.

C'est pour ces tâches que Linux utilise le service système cron. Il s'agit d'un planificateur qui vous permet d'exécuter les scripts dont vous avez besoin une fois par heure, une fois par jour, par semaine ou par mois, ainsi qu'à tout moment que vous spécifiez ou à n'importe quel intervalle. Le programme est souvent utilisé même par d'autres services du système d'exploitation. Dans cet article, nous verrons comment Cron est configuré et examinerons les principaux exemples fréquemment utilisés.

En fait, Cron est un service, comme la plupart des autres services Linux, il démarre au démarrage du système et s'exécute en arrière-plan. Sa tâche principale est de réaliser les bons processus au bon moment. Il existe plusieurs fichiers de configuration à partir desquels il extrait des informations sur ce qui doit être fait et quand. Le service ouvre le fichier /etc/crontab, qui contient toutes les données nécessaires. Souvent, dans les distributions modernes, il est prescrit de lancer l'utilitaire run-parts, qui lance les scripts nécessaires à partir des dossiers suivants :

  • /etc/cron.minutely- chaque minute;
  • /etc/cron.hourly- chaque heure;
  • /etc/cron.daily- tous les jours;
  • /etc/cron.weekly- toutes les semaines;
  • /etc/cron.monthly- chaque mois.

Ces dossiers doivent contenir des scripts qui doivent être exécutés à l'intervalle spécifié. Les scripts doivent avoir des droits d'exécution et leur nom ne doit pas contenir de point. Cela rend le travail avec le planificateur très simple pour les nouveaux utilisateurs. Le fichier crontab contient également le lancement de la commande anacron, qui fonctionne de la même manière que cron, sauf qu'elle est destinée aux tâches qui doivent être effectuées une fois sur une longue période, par exemple une fois par jour, semaine, mois, année.

Il permet de les réaliser même si l'ordinateur ne fonctionne pas toujours et s'éteint de temps en temps. La date à laquelle le travail a été exécuté pour la dernière fois est enregistrée dans le fichier /var/spool/anacron, puis, au prochain démarrage, anacron vérifie si le processus requis était en cours d'exécution au bon moment, et sinon, il démarre il. Le service cron lui-même est davantage conçu pour effectuer des tâches pendant la journée ou avec une heure et une date précisément programmées.

Configuration de Cron

Pour configurer l'heure, la date et l'intervalle pendant lesquels la tâche doit être exécutée, une syntaxe de fichier cron spéciale et une commande spéciale sont utilisées. Bien sûr, vous pouvez toujours modifier le fichier /etc/crontab, mais cela n'est pas recommandé. A la place, il existe une commande crontab :

Il est toujours conseillé de l'effectuer avec l'option -e, puis votre éditeur de texte par défaut sera utilisé pour éditer les règles. La commande vous ouvre un fichier temporaire, qui contient déjà toutes les règles cron actuelles et vous pouvez en ajouter de nouvelles. Une fois la commande cron terminée, le fichier sera traité et toutes les règles seront ajoutées à /var/spool/cron/crontabs/username, et les processus ajoutés seront lancés exactement à partir de l'utilisateur à partir duquel vous les avez ajoutés.

Par conséquent, vous devez être prudent ici, et si vous devez exécuter des scripts en tant que root, alors crontab doit être exécuté en tant que root et non en tant qu'utilisateur. Cela pose souvent des problèmes.

syntaxe crontab

Comme je l'ai déjà dit, l'heure est définie dans une syntaxe spéciale, regardons la syntaxe de configuration d'une seule tâche cron :

minute heure jour mois jour_semaine /chemin/vers/exécutable/fichier

Il faut dire que vous devez écrire le chemin complet de la commande, car pour les commandes exécutées en cron, la variable d'environnement PATH sera différente, et le service ne pourra tout simplement pas trouver votre commande. Il s’agit de la deuxième cause la plus courante de problèmes avec Cron. La date et l'heure sont indiquées à l'aide de chiffres ou du symbole "*". Ce symbole signifie qu'il doit être exécuté à chaque fois, si dans le premier champ, puis toutes les minutes et ainsi de suite. Eh bien, passons maintenant aux exemples.

Exemples de paramètres cron

Tout d'abord, vous pouvez afficher les tâches cron pour le superutilisateur, pour cela vous pouvez utiliser l'option -l :

Vous pouvez supprimer toutes les tâches existantes avec la commande -r :

Supposons que nous devions exécuter notre script dans /usr/local/bin/serve en tant que superutilisateur. Une sorte de script de maintenance. L'exemple le plus simple consiste à l'exécuter toutes les minutes :

* * * * * /usr/local/bin/serve

0 * * * * /usr/local/bin/serve

Nous lançons à zéro minute de zéro heure, tous les jours, c'est-à-dire à minuit :

0 0 * * * /usr/local/bin/serve

0 0 1 * * /usr/local/bin/serve

Vous pouvez le faire n'importe quel jour, par exemple le 15 :

0 0 15 * * /usr/local/bin/serve

Le premier jour de la semaine du premier mois de l'année, 0 heure 0 minute :

0 0 * 1 0 /usr/local/bin/serve

Ou le jour zéro de la semaine de chaque mois :

0 0 * * 0 /usr/local/bin/serve

Vous pouvez sélectionner n'importe quelle minute, heure et jour de la semaine, par exemple 15h30 le mardi :

30 15 * * 2 /usr/local/bin/serve

Le lundi est considéré comme le premier jour, le dimanche est le septième ou zéro jour. Vous pouvez également écrire un nom abrégé pour le jour de la semaine, par exemple soleil - dimanche :

30 15 * * soleil /usr/local/bin/serve

Afin d'indiquer un intervalle précis, vous devez utiliser le symbole « - », par exemple toutes les heures, de sept heures du matin à sept heures du soir :

0 7-19 * * * /usr/local/bin/serve

Si vous devez exécuter une commande plusieurs fois, vous pouvez utiliser le séparateur ",". Par exemple, exécutons le script à cinq heures et demie 35 (16h05 et 16h35), tous les jours :

5.35 16 * * * /usr/local/bin/serve

Vous ne souhaiterez peut-être pas spécifier l'heure séparément, mais spécifiez simplement l'intervalle auquel vous souhaitez que le script s'exécute, par exemple une fois toutes les 10 minutes. Pour ce faire, utilisez le délimiteur slash - "/":

*/10 * * * * /usr/local/bin/serve

De plus, des variables ont été inventées pour certains ensembles couramment utilisés, les voici :

  • @reboot- lors du chargement, une seule fois ;
  • @annuellement, @annuellement- une fois par an;
  • @mensuel- une fois par mois;
  • @hebdomadaire- une fois par semaine;
  • @daily, @minuit- tous les jours;
  • @horaire- chaque heure.

Par exemple, voici à quoi ressemblerait simplement une commande permettant d’exécuter un script une fois par heure :

@hourly /usr/local/bin/serve

Si vous souhaitez ajouter un script à l'un des dossiers, alors, comme je l'ai déjà dit, vous devez que son nom soit sans points et qu'il ait des droits d'exécution :

sudo vi /etc/corn.daily/basckup

Le script devrait ressembler à ceci. Maintenant que vous savez comment configurer cron, il ne reste plus qu'à vérifier comment tout fonctionne.

Travail de débogage

Après avoir défini les règles, vous souhaitez également vérifier si elles fonctionnent. Pour ce faire, nous attendons le moment où le script doit déjà être exécuté et regardons le journal cron. Parfois, il se trouve dans /var/log/cron, et parfois il est écrit dans syslog. Par exemple, j'ai cette ligne dans ma crontab :

Il devrait être exécuté à 19h40 tous les jours, regardez maintenant le journal :

grep CRON /var/log/syslog

Et nous voyons que dans notre journal, cela existe réellement et est exécuté avec succès. S'il y avait des erreurs, un message s'afficherait immédiatement.

Si vous avez besoin de vérifier un script qui se trouve dans l'un des dossiers spécialisés, alors c'est encore plus simple, exécutez simplement run-paths, en passant le dossier souhaité ou même le script lui-même en paramètre :

sudo run-paths /etc/cron.daily/

conclusions

Dans cet article, nous avons examiné comment cron est configuré pour une planification pratique des tâches automatiques. J'espère que ces informations vous ont été utiles.

Cron est un planificateur de tâches qui s'exécute sur un hébergement Unix\Linux. Il permet d'effectuer automatiquement certaines actions sur le serveur (lancement de programmes, de scripts, etc.), avec une heure ou une fréquence déterminée.

Configurer correctement le planificateur de tâches Cron

Les tâches pour Cron peuvent être décrites comme suit - ce sont plusieurs lignes (une ligne - une tâche), qui indiquent la fréquence de lancement et la commande (ce qui signifie ce qui doit réellement être lancé) :

30 3 * * 2 /votrerépertoire/monscript.pl

Schématiquement :

Minutes Heures JourMois Mois JourSemaine Commande

minutes- défini par un nombre de 0 à 59

Montre- défini par un nombre de 0 à 23

Jour du mois- défini par un nombre de 1 à 31

Mois- défini par un nombre de 1 à 12

Jour de la semaine- 1 - lundi, 2 - mardi, 3 - mercredi, 4 - jeudi, 5 - vendredi, 6 - samedi, 7 - dimanche

Ainsi, dans notre exemple (30 3 * * 2 /yourdirectory/myscript.pl) back signifie que vous devez exécuter le fichier /yourdirectory/myscript.pl tous les mardis à 3h30.

Également dans chacun des domaines, nous pouvons utiliser :

Écriture séparée par des virgules: 2,5,16 - si vous écrivez ceci dans le champ Heures, la tâche s'exécutera à 2h, 5h et 16h.

Intervalle: 5-9 - si vous écrivez ceci dans le champ Minutes, la tâche s'exécutera toutes les minutes dans la période de 5 à 9 minutes.

Fréquence supplémentaire: /4 - si vous écrivez ceci dans le champ heures, cela signifiera que le lancement aura lieu toutes les 4 heures.

Important! Un astérisque (*) signifie toutes les valeurs possibles ! Ainsi, un webmaster inexpérimenté qui décide que pour exécuter une tâche le 1er de chaque mois il suffit d'écrire * * 1 * * /yourdirectory/myscript.pl tombe sur le fait que la tâche sera lancée toutes les minutes, toutes les heures.

Comment et où accéder aux jobs Cron ?

La première façon de travailler avec Cron consiste à utiliser votre panneau de contrôle d'hébergement. Mais dans différents panneaux, la configuration et la gestion s'effectuent différemment :

cPanel : Panneau de configuration -> Tâches Cron

Gestionnaire FAI : Panneau de configuration -> Planificateur (Cron)

Parallels Plesk : Panneau de configuration -> Tâches planifiées

Si votre fournisseur d'hébergement n'a pas la possibilité de travailler avec des tâches via le panneau de configuration, alors tout le travail avec Cron est généralement effectué via le protocole SSH. Tout est simple ici : connectez-vous au serveur via SSH et entrez les commandes. Pour vous connecter au serveur, utilisez le programme gratuit PuTTY (comment le configurer) et entrez les commandes sur la ligne de commande.

Pour commencer, entrez la commande

Après cela, vous serez très probablement transféré vers l'éditeur de texte vi (différents fournisseurs peuvent avoir différents éditeurs). vi est un éditeur assez complexe, nous vous recommandons donc d'essayer de saisir la ligne

Si un éditeur plus léger démarre, alors tout va bien, mais si votre fournisseur d'hébergement ne le prend pas en charge, alors Google vous aidera à comprendre avec vi. Nous nous contenterons d’en souligner brièvement les principaux points :

Saisir du texte- appuyez sur la touche i et l'éditeur passera en mode saisie de texte ;

quitter le mode de saisie de texte- Échap

Supprimer un caractère- x (si vous êtes en mode de saisie test, alors pour supprimer un caractère, appuyez d'abord sur Echap puis sur x) ;

Important! Lors de la saisie de tâches pour Cron, vous devez appuyer sur Entrée après chaque ligne, même s'il s'agit de la seule ligne.

Pour afficher les tâches Cron existantes, entrez crontab -l

Tâches Cron avec des exemples utiles

Voir les règles de création de tâches Cron. Exécuter une tâche toutes les 2 heures à 0 minute (chaque jour, chaque mois)

0 */2 * * * /votrerépertoire/monscript.pl

Exécutez la tâche à chaque fois après le redémarrage du serveur

@reboot/votrerépertoire/myscript.pl

Exécutez la tâche le mercredi à 3h20 (tous les jours, tous les mois)

20 3 * * 3 /votrerépertoire/monscript.pl
1 0 14 3 * /votrerépertoire/monscript.pl

Exécutez la tâche mensuellement le 1er à 3h15 (chaque mois)

15 3 1 * * /votrerépertoire/monscript.pl

Exécutez des fichiers PHP selon un planning à l'aide de Cron

Pour exécuter des scripts PHP via Cron, vous pouvez utiliser un interpréteur spécial. Malheureusement, nous ne pouvons pas vous donner d'instructions sur la façon de l'utiliser, car... Différents fournisseurs peuvent utiliser des logiciels différents. Par conséquent, de nombreux webmasters lancent des fichiers PHP en utilisant WGET, pour cela nous utilisons l'entrée crontab suivante :

30 3 * * 2 racine wget -O - -q -t 1 http://mysite.com/file.php

"-O -" signifie que Cron ne créera pas de fichiers inutiles, mais fonctionnera via la console. Cela permet d’éviter d’encombrer le serveur.

"-q" désactive l'impression de l'opération à l'écran

"-t 1" n'autorise qu'une seule tentative de connexion.

http://mysite.com/file.php - chemin d'accès à votre fichier PHP (il n'est pas nécessaire de spécifier un chemin absolu).

Important! Si vous transmettez des paramètres à l'aide de ce fichier PHP, il arrive parfois que WGET ne les traite pas correctement. Dans ce cas, nous vous recommandons de mettre l'adresse du fichier PHP entre guillemets simples :

30 3 * * 2 racine wget -O - -q -t 1 "http://mysite.com/file.php"

Il existe également une autre façon de commencer :

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

Mais dans ce cas, vous devez connaître le chemin d'accès au dossier wget sur votre serveur (le plus souvent /usr/bin/wget ou /usr/local/bin/wget).

Recevoir un rapport de travail Cron par email

Cron peut être configuré pour envoyer des e-mails avec les résultats des tâches en cours d'exécution. Cette fonctionnalité peut également être utile pour la notification en cas d'erreur. Pour recevoir un rapport par e-mail, vous devez éditer la crontab (avant les tâches) et écrire la ligne suivante :

[email protégé]- c'est l'e-mail auquel les lettres seront envoyées. Vous pouvez également ajouter plusieurs adresses, séparées par des virgules.

Il y a encore une chose : vous recevrez également le résultat du script par email. par exemple, si le script écrit une sorte d'inscription sur l'écran, la même inscription sera envoyée à votre courrier électronique avec le rapport. Si cela vous ennuie, ajoutez la ligne > /dev/null 2>&1 à la fin de la tâche

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1

Supposons que nous devions exécuter une certaine tâche tous les jours, ou peut-être tous les samedis à minuit ? Sur les systèmes de type Unix, il est possible d'automatiser le lancement de tâches répétitives à l'aide du démon du planificateur de tâches cron. Cet article couvrira les bases de son utilisation.

Tout ce qui est décrit dans cet article est testé sur Linux Debian 6.0 squeeze, mais dans la plupart des cas, il fonctionnera sur d'autres systèmes d'exploitation de type Unix.

Commandes de base

Pour gérer le planificateur de tâches, utilisez la commande crontab avec les clés suivantes :

U utilisateur - définit l'utilisateur dont les tâches seront visualisées/éditées ; l'absence de ce paramètre définit l'utilisateur actuel ;
-l - affiche une liste des tâches en cours ;
-e - lance l'éditeur du planificateur de tâches ;
-r - supprime toutes les tâches en cours.

Ainsi, pour attribuer une tâche spécifique, vous devez exécuter la commande crontab -e et rédiger une liste ligne par ligne des tâches requises basées sur la syntaxe cron.

syntaxe cron

En général, une tâche cron est une ligne comme :

* * * * * équipe

Chaque astérisque d'une ligne correspond à une valeur précise :

0 et 7 dans le jour de la semaine indiquent le dimanche, puisque dans certains pays, le jour de la semaine commence par le dimanche. En conséquence, 1 est lundi, 6 est samedi. En plus de ceux répertoriés ci-dessus, les caractères de base suivants sont autorisés dans le fichier crontab :

# - commentaire (les lignes commençant par ce caractère ne sont pas exécutées) ;
, - énumération de valeurs (1,2,3,4) ;
/ - tous les n fois (*/n - tous les n, */5 - tous les 5, */2 - tous les 2) ;
- - plage de valeurs (1-5 - de 1 à 5, 4-6 - de 4 à 6).

De ce qui précède, il s'ensuit que les entrées suivantes correspondent aux lignes suivantes :

0 5 * * * - tous les jours à 17h00 ;
*/10 * * * * - toutes les 10 minutes ;
0 0 1 1 * - le 1er janvier de chaque année ;
0 9 * * 1,3,5 - lundi, mercredi et vendredi à 9h ;
0 0 1 * * - chaque 1er jour du mois.

Vous pouvez également écrire les valeurs prédéfinies suivantes dans le fichier crontab :

@reboot - lors du chargement du système d'exploitation ;
@yearly - chaque année à minuit le 1er janvier ;
@monthly - chaque mois le 1er à minuit ;
@weekly - à minuit tous les lundis ;
@daily - tous les jours à 0h00 ;
@hourly - au début de chaque heure.

Exemple de fichier crontab

La meilleure façon de comprendre la syntaxe d'un fichier crontab est d'utiliser l'exemple suivant : crontab -e -u user

#Bonjour, je suis le fichier crontab de l'utilisateur et c'est ce que mon maître m'a appris
#Je lui dis bonjour après mon téléchargement
@reboot echo "Bonjour, Maître !"

#Chaque jour de la semaine à 6h45, j'exécute un script pour cela,
#qui allume l'alarme
45 6 * * 1-5 /home/user/beep.sh

#Pendant que le propriétaire se met au travail ou dort suffisamment un jour de congé,
#Je lui envoie les dernières nouvelles (tous les jours à 8h)
0 8 * * * /home/user/newsmail.sh

#J'appelle le propriétaire chez lui à la fin de la journée de travail
0 18 * * 1-5 echo "Rentre à la maison, Maître" | mail -s utilisateur "Fin de journée de travail"

#Et je le félicite
@yearly echo "Bonne année"

Un mécanisme utile qui permet de contrôler l'exécution des processus dans Linux est un planificateur de tâches ou cron, déposer crontab dans le répertoire etc, à l'aide de ce fichier, sont ajoutés des scripts et des tâches que nous pouvons écrire pour un système en cours d'exécution, par exemple pour contrôler le fonctionnement Linux systèmes par e-mail

Cron– le service démon est utilisé dans Linux/Unix systèmes en tant que planificateur de tâches. Le démon vous permet de lancer périodiquement des scripts à exécuter.

Les fichiers créés sont placés soit dans le répertoire :
/usr/spool/cron/crontabs ou /var/spool/cron/tabs
Il vous suffit de les modifier en exécutant crontab –e
Selon la période d'exécution, les fichiers peuvent être placés dans les répertoires suivants :
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

Créer des tâches cron
Créer une tâche dans crontab ressemble à remplir six champs obligatoires, leur signification est la suivante :
1. Minutes – un nombre de 0 à 59
2. Heures – chiffres de 0 à 23
3. Jour du mois – un nombre de 1 à 31
4. Numéro du mois dans l'année – un nombre de 1 à 12
5. Jour de la semaine – un chiffre de 0 à 7
0-dimanche, 1-lundi, 2-mardi, 3-mercredi, 4-jeudi, 5-vendredi, 6-samedi
Pour chacun des paramètres ci-dessus, les valeurs suivantes peuvent être définies :
a) Séparés par des virgules - 3,7,9 (dans le champ du jour du mois 3,7,9 respectivement)
b) Avec trait d'union – 3-9 (dans le champ des heures, cela signifiera exécution à 3,4,5,6,7,8,9)
c) * - sera exécuté dans toutes les valeurs possibles
d) / - définition de périodes de tâche supplémentaires - */8 dans le champ des minutes, sera exécuté toutes les huit minutes

Comment exécuter une tâche cron lorsque le système démarre. Pour exécuter un script au démarrage du système Linux Le mot clé reboot est utilisé. Par exemple:

De plus, vous pouvez utiliser les mots-clés suivants :
@yearly – identique à 0 0 1 1 * (une fois par an)
@daily – identique à 0 0 * * * (une fois par jour)
@hourly – identique à 0 * * * * (une fois par heure)

Commandes pour gérer crontab
- afficher les tâches pour le compte courant
crontab –l
- afficher les tâches pour le compte souhaité
crontab –u nom d'utilisateur –l
- Modification des tâches cron
crontab –e
- Modification des tâches cron pour un utilisateur donné
crontab –u nom d'utilisateur –e

Exemples de tâches cron :
Terminez la tâche à 7 heures du matin tous les jours
0 7 * * * racine /home/scripts/mount.sh
Terminez la tâche à 17h30 tous les jours
30 17 * * * racine /home/scripts/mount.sh
Terminez la tâche chaque mois le premier jour à 0 heure 0 minute
0 0 1 * * racine /home/scripts/mount.sh
Exécutez la tâche toutes les 4 heures
* * /4 * * * racine /home/scripts/mount.sh
Exécuter la tâche au démarrage Linux
@reboot racine /home/scripts/mount.sh

Configuration cron supplémentaire
Pour recevoir un rapport sur les tâches cron vous pouvez définir une variable MAIL au début cron scénario
MAIL=mail.mail.local
Par défaut, la lettre contiendra tous les messages générés par le script ; pour éviter que cela ne se produise, vous devez ajouter > /dev/null 2>&1 à la tâche cron du script
Pour désactiver la réception des messages de cron, vous devez laisser la variable MAIL non définie
COURRIER=””
Il est possible de déterminer le chemin d'accès au fichier avec le script à l'aide de la variable PATH, par exemple
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/scripts, dans crontab vous permettra d'écrire dans la ligne des paramètres du travail
@reboot racine mount.sh
Exécuter des scripts via cron en utilisant l'interpréteur php
* 1 * * * /usr/local/bin/php – q mount.sh > /dev/null 2>&1
/usr/local/bin/wget –O /dev/null –q http://"site.com/cron.php?action=123"

Dans les systèmes d'exploitation de type Unix, il est possible d'exécuter des programmes utilisateur à un moment spécifié par l'utilisateur. Pour ce faire, on utilise le planificateur de tâches cron, qui reçoit les instructions des utilisateurs et exécute toutes les tâches selon les scripts reçus. Nos clients peuvent utiliser cette fonctionnalité pour effectuer des tâches périodiques.

Comment configurer cron à l'aide du panneau ISPmanager 5

Configurez les scripts cron via le panneau de configuration dans la section Système → Planificateur

Pour ajouter de nouvelles tâches, cliquez sur "Créer". L'éditeur de script cron interactif s'ouvrira :


Sur le terrain "Équipe" spécifiez le chemin complet du script ou de la commande à exécuter (pour les commandes système, le chemin complet peut ne pas être spécifié). Par exemple, le chemin complet du fichier script.pl situé à la racine du site ressemblera à ceci :

/var/www/u12345/data/www/script.pl

Assurez-vous que le fichier que vous souhaitez exécuter dispose des autorisations de lecture+exécution (r+x) pour le propriétaire du fichier. Vous pouvez modifier les autorisations pour celles dont vous avez besoin avec la commande :

Chmod 750 script.pl

Sur le terrain "Description" vous pouvez prendre une note pour ne pas oublier ce que fait ce script

Base- vous sélectionnez l'une des options répertoriées dans la ligne "Courir": toutes les heures, quotidiennement, hebdomadairement, mensuellement, annuellement, au démarrage.

Expert- réglage flexible de la fréquence de lancement : minutes, heures, jours du mois, mois, jours de la semaine (0 - dimanche). Format de saisie : * - toutes les minutes ; */n - toutes les n minutes ; n - depuis le début de la minute n ; a,b,c-e - depuis le début des minutes a,b,c,d,e

Exemples du mode de base pour régler la fréquence de démarrage :



Exemples de mode expert pour définir la fréquence de démarrage :

  • effectuer la tâche une fois par heure à 05 minutes

  • terminer la tâche le lundi à 1h15

  • terminer la tâche le 5 avril à 0 heure 1 minute chaque année

Lorsque tous les champs sont remplis (sauf le "Description", c'est facultatif), cliquez sur "D'ACCORD".

Envoi de rapports par email sur l'exécution du script

Pour configurer les notifications, précisez l'e-mail auquel les notifications concernant l'exécution du script seront envoyées. Pour cela, rendez-vous dans la rubrique "Planificateur"


Cliquez sur le bouton "Paramètres" et sur le terrain "Adresse e-mail" spécifiez l'e-mail auquel les notifications concernant l'exécution du script doivent être envoyées.


Dans les paramètres du script, assurez-vous que la case à côté de "N'envoyez pas le rapport par e-mail".

Comment configurer cron sur ssh

La configuration des scripts cron se fait via le shell Unix. Déterminez quels programmes doivent être lancés et découvrez leurs chemins complets sur le disque du serveur. Pour ce faire, utilisez la commande cd pour accéder au répertoire où se trouve le programme que vous exécutez et recherchez le chemin complet de ce répertoire avec la commande pwd. Le chemin pourrait ressembler à ceci - /home/u12345/scripts/script.pl.

Assurez-vous que le fichier dispose des autorisations de lecture+exécution (r+x) pour l'utilisateur sous lequel vous exécutez le script. Vous pouvez modifier les autorisations pour celles dont vous avez besoin à l'aide de la commande chmod 750 script.pl

750 - droits complets pour le propriétaire du fichier, pour le groupe - lecture et exécution, pour les autres - l'accès est refusé.

Exécutez la commande crontab -e – le planificateur modifiera le plan de l'utilisateur pour le compte duquel vous exécutez cron. Lorsque vous le lancez pour la première fois, vous serez invité à sélectionner un éditeur de texte. Choisissez un éditeur que vous connaissez déjà. A titre d'exemple, nous examinerons l'éditeur de texte vi. Après avoir entré la commande, vous serez dans l'éditeur de texte vi (n), où vous pourrez saisir le texte du script cron.

Une référence rapide à l'éditeur vi :

  • pour insérer du texte, appuyez sur i, puis saisissez le texte
  • Pour supprimer des caractères, appuyez sur ESC puis tapez x
  • Pour quitter vi sans enregistrer vos modifications, appuyez sur ESC puis tapez :q!
  • Pour enregistrer et quitter, appuyez sur ESC puis tapez :wq

Les tâches Cron sont écrites une par ligne. Après chaque ligne, y compris après la dernière ou la seule, assurez-vous d'appuyer sur Entrée, sinon les tâches ne fonctionneront pas.

La tâche ressemble à une chaîne. Au début, il y a cinq champs obligatoires, séparés par des espaces, pour indiquer la fréquence du travail. Voici la commande à exécuter :

champ1 champ2 champ3 champ4 champ5 équipe

Valeurs des cinq premiers champs :

  • minutes - un nombre de 0 à 59
  • heures - un nombre de 0 à 23
  • jour du mois - un nombre de 1 à 31
  • numéro du mois de l'année - un nombre de 1 à 12
  • jour de la semaine - un nombre de 0 à 7 (0-dim, 1-lundi, 2-mar, 3-mer, 4-jeu, 5-ven, 6-sam, 7-dim)

Pour chaque paramètre spécifique, vous pouvez préciser plusieurs valeurs séparées par des virgules. Par exemple, si vous écrivez 1,4,22 dans le champ « heures », alors la tâche s'exécutera à 1h du matin, 4h du matin et 22h. Vous pouvez définir l'intervalle - 4-9 signifie que le programme doit être lancé toutes les heures de 4 à 9 heures incluses.

Symbole «*» signifie "toutes les valeurs possibles". Étoile «*» dans le champ "heures", cela signifiera "exécuter toutes les heures". Symbole «/» sert à indiquer une fréquence supplémentaire de la tâche. Par exemple, "*/3" dans le champ "heures", signifie toutes les trois heures. Si les champs « jour du mois » et « jour de la semaine » sont définis (différents de *), alors une telle tâche sera exécutée chaque jour spécifié de la semaine, quel que soit le jour du mois.

13 13 10 * 5 /home/u12345/script.pl

une telle commande sera exécutée à 13h13 tous les vendredis et tous les 10 du mois, même si le 10 ne coïncide pas avec un vendredi.

Cron vous permet d'exécuter des scripts au démarrage du système - spécifiez @reboot au début du script au lieu de la fréquence d'exécution :

@reboot /home/u12345/script.pl

Voici à quoi ressemble un simple script cron :

0 */3 * * 2.5 /home/u12345/script.pl

Le script /home/u12345/script.pl s'exécutera automatiquement toutes les trois heures le mardi et le vendredi. Entrez un tel script dans l'éditeur vi, quittez et enregistrez les résultats de l'édition. La tâche sera terminée à la fréquence spécifiée si vous n'avez commis aucune erreur.

Cron signale des erreurs dans le script :

/tmp/crontab.xxxxxxx : 1 ligne, 9 caractères crontab : installation d'une nouvelle crontab "/tmp/crontab.xxxxxxx": 1 : mauvaise minute crontab : erreurs dans le fichier crontab, impossible d'installer Voulez-vous réessayer la même modification ?

Vous pouvez afficher la liste des scripts déjà installés dans cron à l'aide de la commande crontab -l :

Bash-2.05b$ crontab -l 0 */3 * * 2.5 /home/u12345/script.pl

Si vous devez exécuter un programme une fois par jour, choisissez la nuit. De 2h à 8h, la charge sur les serveurs est minime. Si un programme nécessite beaucoup de ressources, il s’exécutera plus rapidement la nuit que le jour.

Exemples d'utilisation de cron

  • effectuer la tâche une fois par heure pendant 0 minute - 0 */1 * * * /home/u12345/script.pl
  • exécuter la tâche toutes les trois heures à 0 minute - 0 */3 * * * /home/u12345/script.pl
  • terminer la tâche le lundi à 1h15 - 15 1 * * 1 /home/u12345/script.pl
  • terminer la tâche le 5 avril à 0 heure 1 minute chaque année - 1 0 5 4 * /home/u12345/script.pl
  • effectuer la tâche mensuellement le 1er à 6h10 - 10 6 1 * * /home/u12345/script.pl

Comment exécuter un script PHP selon un planning

Exécutez des scripts en PHP à l'heure spécifiée avec la fréquence souhaitée à l'aide de l'interpréteur PHP-CLI. Voici à quoi pourrait ressembler la commande pour exécuter le script script.php - /usr/bin/php -q $HOME/script.php> /dev/null 2> &1

Puisque tous les programmes PHP ne peuvent pas s'exécuter via SAPI CLI sans modification préalable, vous pouvez les exécuter via wget :

/usr/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Spécifiez le chemin d'accès aux utilitaires dans son intégralité, à partir de la racine du système de fichiers. Si le script utilise les fonctions require et include, qui spécifient des chemins relatifs, au début du script exécuté, utilisez un appel à la fonction chdir(), qui définira le répertoire de travail actuel. Ou utilisez la commande cd intégrée.

@reboot cd /home/u12345 && ./script.pl

Comment obtenir des messages d'erreur des programmes exécutés par cron

Vous pouvez recevoir des messages d'erreur lors de l'exécution de programmes afin de pouvoir surveiller entièrement les performances des tâches exécutées périodiquement. Pour cela, placez la ligne suivante au début du script cron :

[email protected], où « [email protected] » est l'adresse e-mail à laquelle les notifications seront envoyées. Pour spécifier plusieurs adresses, saisissez-les séparées par des virgules.

Vous recevrez un e-mail contenant ce que les scripts génèrent à chaque fois que cron exécute une tâche. Si vous écrivez un script qui imprime la ligne « Hello, world » et que vous l'exécutez via cron, vous recevrez un e-mail avec la ligne « Hello, world » à chaque fois que cron exécute un tel script.

Si vous n'avez pas besoin du texte généré par le script, ajoutez les caractères > /dev/null 2>&1 à la fin de la ligne du script cron

La ligne complète pour cron ressemblera à ceci :

0 1 * * * /usr/bin/php -q $HOME/script.php > /dev/null 2>&1

Vérifiez la syntaxe correcte des scripts que vous avez configurés pour être exécutés via cron. Les scripts peuvent contenir des erreurs et s'exécuter différemment lorsqu'ils sont exécutés via un serveur Web ou via cron, etc. Avant de l'exécuter, vérifiez le script avec la commande dans le shell Unix :

/usr/bin/php -l script.php

S'il n'y a aucune erreur dans le script, vous verrez le message « Aucune erreur de syntaxe détectée dans script.php ».

Comment exécuter un script en tant qu'utilisateur

Pour augmenter la sécurité du système, le script est exécuté pour le compte d'un utilisateur spécifique. Assurez-vous que l'utilisateur dispose des droits nécessaires pour exécuter le script. Placez-le avant la partie principale du script su -l nom d'utilisateur, à partir duquel vous souhaitez exécuter le script.

Par exemple, pour démarrer le serveur TeamSpeak3 en tant qu'utilisateur ts3server, utilisez la commande suivante :

Su -l ts3server ./ts3server_startscript.sh démarrer

Le script se trouve dans le répertoire personnel de l'utilisateur, où nous nous rendons automatiquement lors de l'autorisation.

Restrictions

Pour les programmes lancés via cron, les mêmes restrictions sur les ressources consommées s'appliquent que pour les processus lancés par l'utilisateur dans le shell Unix. Nous parlons de restrictions sur le temps d'exécution du programme, de quantité de mémoire disponible, de restrictions sur la taille des fichiers, etc.