Tâches planifiées : cron et timers

Lire et écrire une ligne de crontab, comprendre l'environnement réduit de cron, utiliser at et planifier avec un timer systemd, y compris la tâche manquée.

  • 35 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Ligne de crontab : de quoi s'agit-il ?

    Voir la réponse

    Ligne qui associe cinq champs de date (minute, heure, jour du mois, mois, jour de la semaine) à une commande, lancée quand tous les champs correspondent.

    Un champ accepte * (toutes les valeurs), une liste 1,4, un intervalle 1-5 ou un pas */15. crontab -l liste les lignes de l'utilisateur et crontab -e les édite.

  • Quand part la ligne « 30 2 * * 1,4 » ?

    • Les lundis et jeudis, à 2 h 30
    • Le 1er et le 4 de chaque mois, à 2 h 30 du matin
    • Tous les jours à 2 h 30, sauf les lundis et les jeudis
    • Les mardis et vendredis, à 2 h 30, avec le dimanche pour premier jour
    Voir la réponse

    Les lundis et jeudis, à 2 h 30

    Le troisième champ est le jour du mois, le cinquième le jour de la semaine, où 1 vaut lundi et 0 ou 7 dimanche. Les deux premiers champs donnent d'abord la minute (30), puis l'heure (2).

  • Les cinq champs d'une ligne de crontab sont, dans l'ordre : …, …, …, … et ….

    Voir la réponse

    Les cinq champs d'une ligne de crontab sont, dans l'ordre : minute, heure, jour du mois, mois et jour de la semaine.

    Le plus petit vient en premier : 30 7 * * 1-5 se lit minute 30, heure 7, tous les jours du mois, tous les mois, du lundi au vendredi.

  • Pas d'une expression cron : de quoi s'agit-il ?

    Voir la réponse

    Écriture */n ou a-b/n qui retient une valeur sur n dans un champ : en minute, */15 donne 0, 15, 30 et 45.

    */5 * * * * part toutes les 5 minutes, mais 5 * * * * ne part qu'à la cinquième minute de chaque heure : l'étoile et la barre oblique font toute la différence.

  • Le script réussit dans le terminal mais échoue chaque nuit sous cron avec « pg_dump: command not found ». Quelle est la cause probable, et la solution ?

    • pg_dump n'est pas installé sur la machine : installer le paquet des outils PostgreSQL
    • Le compte de l'utilisateur n'a pas le droit de lancer des scripts : lui donner sudo
    • Le PATH réduit de cron ne contient pas le dossier de pg_dump : écrire son chemin absolu ou poser PATH= en tête de la crontab
    • Cron ignore les scripts situés hors de /etc/cron.d : les déplacer dans ce dossier
    Voir la réponse

    Le PATH réduit de cron ne contient pas le dossier de pg_dump : écrire son chemin absolu ou poser PATH= en tête de la crontab

    Cron ne lit ni profil ni .bashrc, et son PATH se limite aux dossiers système de base. Puisque la commande marche à la main, elle est installée : c'est son chemin que cron ne connaît pas.