22 mai 2023

Comment configurer un cron sur un serveur Linux via SSH

Qu'est-ce qu'une tâche planifiée sous Linux et comment configurer un cron via crontab ?

À l'ère numérique d'aujourd'hui, caractérisée par des flux de données ininterrompus et des opérations 24h/24 et XNUMXj/XNUMX, les administrateurs système sont constamment confrontés à la nécessité de gérer des tâches et des processus qui doivent s'exécuter à des moments précis. Dans ce contexte, cron se démarque par son utilité et sa fonctionnalité, un utilitaire de planification de tâches présent dans les systèmes d'exploitation de type Unix, dont le célèbre Linux.

Cron s'avère être un outil d'une puissance et d'une flexibilité incroyables, capable d'automatiser l'exécution de commandes ou de scripts selon un calendrier défini. La gamme de tâches qu'il peut gérer est large et variée, y compris la suppression périodique de fichiers temporaires, la création de sauvegardes de données critiques, la surveillance et la vérification de l'état du système, ainsi qu'une multitude d'autres opérations qui, si elles sont gérées manuellement, peuvent être coûteuses et sujettes aux erreurs. .

L'un des aspects les plus attrayants de cron réside dans sa combinaison unique de polyvalence et de simplicité. Tout en ayant une structure complexe qui permet de définir des plannings d'exécution très précis, sa gestion est incroyablement simple. Avec quelques lignes de code, il est possible de programmer une série d'opérations récurrentes, obtenant un gain de temps considérable et minimisant les erreurs dues à l'intervention humaine. Cela représente un avantage considérable dans un contexte où l'efficacité opérationnelle et la fiabilité du système sont primordiales.

Comment un cron est-il structuré sous Linux ?

Une tâche cron sous Linux est définie par une seule ligne de texte dans la crontab, la "table cron". Cette ligne de texte est divisée en six parties distinctes, chacune représentant un élément différent de la tâche cron.

Ces pièces, dans l'ordre, sont :

  1. Minute: Ce champ peut prendre des valeurs de 0 à 59 et indique la minute de chaque heure pendant laquelle la tâche cron doit être exécutée.
  2. maintenant: Ce champ peut prendre des valeurs de 0 à 23 et indique l'heure de la journée à laquelle la tâche cron doit être exécutée.
  3. Jour du mois: Ce champ peut prendre des valeurs de 1 à 31 et indique le jour du mois où la tâche cron doit être exécutée.
  4. Mese: Ce champ peut prendre des valeurs de 1 à 12 et indique le mois de l'année au cours duquel la tâche cron doit être exécutée.
  5. Giorno della Settimana: Ce champ peut prendre des valeurs de 0 à 7, où 0 et 7 représentent le dimanche. Indique le jour de la semaine où la tâche cron doit s'exécuter.
  6. Commande ou script: Il s'agit de la commande que vous souhaitez exécuter ou du chemin d'accès au fichier de script à exécuter. Il peut inclure n'importe quelle commande que vous exécuteriez normalement à partir de la ligne de commande.

Chaque champ est séparé par un espace. Vous pouvez également utiliser des opérateurs spéciaux comme "", "/", "-", "," Et "/" pour spécifier les tâches cron qui se répètent à intervalles réguliers ou se produisent à des moments précis.

Par exemple, la ligne 0 14 * * * /percorso/allo/script.sh dans la crontab indique une tâche cron qui exécutera le script spécifié tous les jours à 14h00.

Comment configurer un cron via SSH

Avant de commencer, il est important de noter que vous aurez besoin d'un accès SSH à votre serveur. Si vous ne l'avez pas déjà fait, vous devriez l'obtenir, car SSH est un outil essentiel pour gérer un serveur distant.

SSH, abréviation de Secure Shell, est un protocole réseau qui permet une communication sécurisée entre deux systèmes à l'aide d'une architecture client-serveur. Il permet aux utilisateurs de contrôler et de modifier leurs serveurs distants via Internet.

Pour accéder à votre serveur via SSH, vous aurez besoin des informations d'identification de l'utilisateur, qui incluent l'adresse IP, le nom d'utilisateur et le mot de passe du serveur. Si vous ne disposez pas de ces informations, vous devrez les demander à votre administrateur système.

Voici les étapes pour configurer un cron via crontab :

  1. Accès au serveur: Tout d'abord, connectez-vous à votre serveur en utilisant SSH. Vous pouvez le faire depuis votre terminal en utilisant la commande ssh username@your_server_ip.
  2. Ouverture de la Crontab: Une fois connecté, vous pouvez accéder à la crontab, la table utilisée par cron pour suivre les tâches planifiées, à l'aide de la commande crontab -e. Si c'est la première fois que vous utilisez crontab, vous serez invité à choisir l'éditeur de texte de votre choix. Vous pouvez choisir parmi des options telles que nano, vi ou emacs.
  3. Rédaction d'emploi: Maintenant, vous pouvez publier votre annonce. Chaque ligne crontab représente un travail et se compose de six parties : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12), jour de la semaine (0-7, où 0 et 7 représentent tous deux dimanche), et la commande ou le script à exécuter.
  4. Enregistrement du travail: Après avoir entré votre travail, enregistrez et fermez l'éditeur. Si vous utilisez nano, par exemple, vous pouvez le faire en appuyant sur CTRL+X, puis Y pour confirmer l'enregistrement et enfin Enter pour confirmer le nom du fichier.

Exemples de Chron

Pour vous aider à mieux comprendre comment mettre en place des crons, voici quelques exemples pratiques :

  1. Exécutez une commande toutes les minutes: Pour ce faire, vous entreriez * * * * * comando dans le crontab. La commande s'exécutera toutes les minutes.
  2. Exécutez un script tous les jours à 2h: Insérer 0 14 * * * /percorso/allo/script.sh dans le crontab. Le script s'exécutera tous les jours à 14h00.
  3. Exécuter une commande le premier jour de chaque mois: Insérer 0 0 1 * * comando dans le crontab. La commande sera exécutée à 00h00 le premier jour de chaque mois.
  4. Exécutez une commande tous les lundis à 6h du matin: Insérer 0 6 * * 1 comando dans le crontab. La commande s'exécutera tous les lundis à 6h00.
  5. Exécuter un script toutes les 15 minutes: Insérer */15 * * * * /percorso/allo/script.sh dans le crontab. Le script s'exécutera toutes les 15 minutes.
  6. Exécuter une commande toutes les heures: Insérer 0 * * * * comando dans le crontab. La commande s'exécutera toutes les heures.
  7. Exécutez une commande toutes les demi-heures: Insérer */30 * * * * comando dans le crontab. La commande s'exécutera toutes les demi-heures.
  8. Exécuter un script toutes les deux heures: Insérer 0 */2 * * * /percorso/allo/script.sh dans le crontab. Le script s'exécutera toutes les deux heures.
  9. Exécutez une commande tous les jours à 8h du matin et 8h du soir: Insérer 0 8,20 * * * comando dans le crontab. La commande s'exécutera tous les jours à 8h00 et 20h00.
  10. Exécuter un script le premier lundi de chaque mois: Insérer 0 0 * * 1 [ "$(date +\%m)" != "$(date +\%m -d '1 week')" ] && /percorso/allo/script.sh dans le crontab. Le script s'exécutera le premier lundi de chaque mois.
  11. Exécutez une commande à 10.30hXNUMX tous les jours: Insérer 30 10 * * * comando dans le crontab. La commande s'exécutera tous les jours à 10h30.
  12. Exécutez un script toutes les 5 minutes pendant les heures ouvrables (9-17): Insérer */5 9-17 * * * /percorso/allo/script.sh dans le crontab. Le script s'exécutera toutes les 5 minutes pendant les heures ouvrables.
  13. Exécutez une commande chaque année: Insérer 0 0 1 1 * comando dans le crontab. La commande sera exécutée une fois par an, précisément à 00h00 le 1er janvier.
  14. Exécutez un script toutes les 10 minutes le week-end: Insérer */10 * * * 6,7 /percorso/allo/script.sh dans le crontab. Le script s'exécutera toutes les 10 minutes le samedi et le dimanche.
  15. Exécutez une commande tous les quarts d'heure du lundi au vendredi: Insérer */15 * * * 1-5 comando dans le crontab. La commande s'exécutera toutes les 15 minutes du lundi au vendredi.
  16. Exécuter un script à 3 h 21 le premier jour du printemps (XNUMX mars): Insérer 0 15 21 3 * /percorso/allo/script.sh dans le crontab. Le script sera exécuté à 15 heures le 00 mars.
  17. Exécuter une commande toutes les 5 heures: Insérer 0 */5 * * * comando dans le crontab. La commande s'exécutera toutes les 5 heures.
  18. Exécuter un script tous les jours à 2h, sauf le week-end: Insérer 0 14 * * 1-5 /percorso/allo/script.sh dans le crontab. Le script sera exécuté à 14 heures du lundi au vendredi.
  19. Exécutez une commande tous les jours à 22h30: Insérer 30 22 * * * comando dans le crontab. La commande s'exécutera tous les jours à 22h30.
  20. Exécuter un script le 15 de chaque mois: Insérer 0 0 15 * * /percorso/allo/script.sh dans le crontab. Le script s'exécutera le 15 de chaque mois à 00h00.

N'oubliez pas que cron est un outil puissant, mais un grand pouvoir s'accompagne également d'une grande responsabilité. Il est important de toujours revérifier les paramètres de la tâche cron pour éviter les problèmes potentiels.

Cron pour obtenir des URL via curl ou wget

Si vous êtes un webmaster ou gérez un serveur Web, vous devrez peut-être effectuer des tâches planifiées en appelant des URL spécifiques. Cela peut être particulièrement utile pour automatiser des processus tels que l'interrogation des données d'une API, le déclenchement d'opérations de maintenance, le déclenchement de sauvegardes ou le nettoyage de bases de données. La manière la plus courante d'y parvenir est d'utiliser les utilitaires `curl` ou `wget`.

boucle contre wget

`Curl` et `wget` sont deux commandes de ligne de commande très populaires dans les systèmes de type Unix, utilisées pour transférer des données vers ou depuis un serveur à l'aide de divers protocoles réseau, notamment HTTP, HTTPS, FTP et bien d'autres.. Alors que `curl` est plus puissant et flexible, `wget` est connu pour sa robustesse et sa facilité d'utilisation, en particulier lorsqu'il s'agit de téléchargements récursifs.

Voici cinq exemples de tâches cron qu'ils utilisent curl o wget:

  1. Appeler une URL tous les jours à 6h du matin avec curl: Insérer 0 6 * * * curl http://miosito.com/operazione dans le crontab. Cette tâche cron appellera l'URL spécifiée tous les jours à 6h00.
  2. Télécharger un fichier tous les soirs à 2 heures avec wget: Insérer 0 2 * * * wget -O /percorso/al/file http://miosito.com/file.zip dans le crontab. Cette tâche cron téléchargera le fichier spécifié et l'enregistrera à l'emplacement spécifié tous les soirs à 2h00.
  3. Appelez l'API d'un service toutes les heures avec curl: Insérer 0 * * * * curl https://api.mioservizio.com/update dans le crontab. Cette tâche cron appellera l'API spécifiée toutes les heures.
  4. Appelez WordPress wp-cron.php toutes les 15 minutes avec wget: Insérer */15 * * * * wget -q -O - http://miosito.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 dans le crontab. Cette tâche cron appellera le fichier wp-cron.php de votre site WordPress toutes les 15 minutes. La sortie sera ignorée pour éviter de remplir les journaux avec des informations inutiles.
  5. Téléchargez une liste de fichiers tous les jours à 5h avec wget: Insérer 0 17 * * * wget -i http://miosito.com/lista-di-file.txt dans le crontab. Cette tâche cron téléchargera une liste de fichiers à partir d'un fichier texte spécifié tous les jours à 17h00.

N'oubliez pas que c'est curl que wget ils ont de nombreuses options et fonctionnalités ; par conséquent, il peut être utile de consulter les pages de manuel associées pour savoir comment personnaliser au mieux vos tâches cron.

 

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

AVIS DE NON-RESPONSABILITÉ, Mentions légales et droits d'auteur. Red Hat, Inc. détient les droits sur Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale de la AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la Fondation FreeBSD ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt ; Oracle Corporation détient les droits sur Oracle®, MySQL®, MyRocks®, VirtualBox® et ZFS® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; PostgreSQL® est une marque déposée de PostgreSQL Global Development Group ; SQLite® est une marque déposée de Hipp, Wyrick & Company, Inc. ; KeyDB® est une marque déposée d'EQ Alpha Technology Ltd. ; Typesense® est une marque déposée de Typesense Inc. ; REDIS® est une marque déposée de Redis Labs Ltd ; F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB ; HAProxy® est une marque déposée de HAProxy Technologies LLC ; Traefik® est une marque déposée de Traefik Labs ; Envoy® est une marque déposée de CNCF ; Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited ; Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal® ; Shopify® est une marque déposée de Shopify Inc. ; BigCommerce® est une marque déposée de BigCommerce Pty. Ltd.; TYPO3® est une marque déposée de la TYPO3 Association; Ghost® est une marque déposée de la Ghost Foundation; Amazon Web Services, Inc. détient les droits sur AWS® et Amazon SES® ; Google LLC détient les droits sur Google Cloud™, Chrome™ et Google Kubernetes Engine™ ; Alibaba Cloud® est une marque déposée d'Alibaba Group Holding Limited ; DigitalOcean® est une marque déposée de DigitalOcean, LLC ; Linode® est une marque déposée de Linode, LLC ; Vultr® est une marque déposée de The Constant Company, LLC ; Akamai® est une marque déposée d'Akamai Technologies, Inc. ; Fastly® est une marque déposée de Fastly, Inc. ; Let's Encrypt® est une marque déposée d'Internet Security Research Group ; Microsoft Corporation détient les droits sur Microsoft®, Azure®, Windows®, Office® et Internet Explorer® ; Mozilla Foundation détient les droits sur Firefox® ; Apache® est une marque déposée de The Apache Software Foundation ; Apache Tomcat® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée de PHP Group ; Docker® est une marque déposée de Docker, Inc. Kubernetes® est une marque déposée de The Linux Foundation ; OpenShift® est une marque déposée de Red Hat, Inc. ; Podman® est une marque déposée de Red Hat, Inc. ; Proxmox® est une marque déposée de Proxmox Server Solutions GmbH ; VMware® est une marque déposée de Broadcom Inc. ; CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV ; Grafana® est une marque déposée de Grafana Labs ; Prometheus® est une marque déposée de The Linux Foundation ; Zabbix® est une marque déposée de Zabbix LLC ; Datadog® est une marque déposée de Datadog, Inc. ; Ceph® est une marque déposée de Red Hat, Inc. ; MinIO® est une marque déposée de MinIO, Inc. ; Mailgun® est une marque déposée de Mailgun Technologies, Inc. ; SendGrid® est une marque déposée de Twilio Inc. Postmark® est une marque déposée d'ActiveCampaign, LLC ; cPanel®, LLC détient les droits sur cPanel® ; Plesk® est une marque déposée de Plesk International GmbH ; Hetzner® est une marque déposée de Hetzner Online GmbH ; OVHcloud® est une marque déposée d'OVH Groupe SAS ; Terraform® est une marque déposée de HashiCorp, Inc. ; Ansible® est une marque déposée de Red Hat, Inc. ; cURL® est une marque déposée de Daniel Stenberg ; Facebook®, Inc. détient les droits sur Facebook®, Messenger® et Instagram®. Ce site n'est pas affilié, sponsorisé ou autrement associé à l'une des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées sont la propriété de leurs titulaires respectifs. MANAGED SERVER® est une marque déposée européenne de MANAGED SERVER SRL, dont le siège social est situé Via Flavio Gioia, 6, 62012 Civitanova Marche (MC), Italie et le siège opérationnel Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italie.

JUSTE UN MOMENT !

Vous êtes-vous déjà demandé si votre hébergement était nul ?

Découvrez dès maintenant si votre hébergeur vous pénalise avec un site web lent digne des années 1990 ! Résultats immédiats.

Fermer le CTA
Retour en haut de page