Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
  1. Livres et vidéos
  2. shell sous Unix/Linux
  3. Automatisation
Extrait - shell sous Unix/Linux Apprenez à écrire des scripts pour administrer votre système
Extraits du livre
shell sous Unix/Linux Apprenez à écrire des scripts pour administrer votre système
2 avis
Revenir à la page d'achat du livre

Automatisation

Sortie du terminal

Chaque commande exécutée est liée au terminal sur lequel elle est lancée. Cela signifie notamment que si l’on ferme un terminal pendant qu’une commande (par exemple un script) y fonctionne, celle-ci est interrompue.

Pour empêcher ce comportement plusieurs outils sont disponibles, dont les deux plus connus sont nohup et screen.

1. Détacher définitivement : nohup

La commande nohup nohangup ») permet d’exécuter une commande totalement détachée du terminal courant : l’entrée standard stdin de la commande est « vide », sa sortie standard stdout est redirigée dans un fichier appelé nohup.out et sa sortie d’erreur stderr est redirigée vers la sortie standard de nohup. De plus, lorsque l’on souhaite stocker la sortie dans un fichier portant un autre nom, il suffit de rediriger la sortie de nohup vers le fichier demandé : nohup détecte que sa sortie n’est pas un terminal et ne la redirige donc pas vers nohup.out.

Notez que nohup ne rend pas la main : si on l’interrompt avec [Ctrl] C par exemple, la commande est également interrompue. Par contre, si on ferme le terminal dans lequel nohup est lancée, la commande ne s’interrompt pas. Si l’on souhaite que nohup rende la main immédiatement, il suffit d’y ajouter...

Planification régulière

Les systèmes UNIX, dont Linux, disposent d’un système appelé Cron, dont le but est de planifier des tâches régulières, ou tâches planifiées. Celui-ci est composé d’un logiciel serveur (daemon), cron, qui a pour rôle d’exécuter ces tâches ; ce programme est lancé au démarrage de l’ordinateur, on n’a généralement pas besoin d’interagir directement avec lui. Ses tâches sont décrites dans des fichiers de configuration, auxquels on accède selon deux manières différentes :

  • Les tâches utilisateurs sont manipulées avec la commande crontab.

  • Les tâches système sont directement éditées dans des fichiers contenus dans /etc.

1. Format des tâches

Chaque tâche planifiée est décrite par une ligne dans l’un des fichiers de configuration susmentionnés. Ces lignes sont composées de six ou sept champs, séparés par des espaces. Les cinq premiers champs décrivent les moments où exécuter les tâches.

Dans le cas d’une tâche utilisateur, le sixième champ est la commande à exécuter ; elle sera exécutée en tant que l’utilisateur auquel appartient la tâche.

Dans le cas d’une tâche système, le sixième champ est l’utilisateur avec lequel exécuter la tâche et le septième champ est la commande à exécuter.

Les commandes sont exécutées lorsque les conditions décrites dans les cinq premiers champs sont rencontrées en même temps (opération booléenne « ET »). Ces cinq premiers champs sont, dans l’ordre :

  • Les minutes (valeurs de 0 à 59).

  • Les heures (valeurs de 0 à 23).

  • Les jours du mois (valeurs de 1 à 31).

  • Les mois (valeurs de 1 à 12).

  • Les jours de la semaine (valeurs de 0 à 7, 0 et 7 représentant le dimanche).

Correspondre à tout

Lorsque l’on souhaite qu’un champ soit ignoré - autrement dit, que la condition soit vraie, quelle que soit la valeur du champ - celui-ci peut contenir un astérisque « * », qui garde sa signification universelle :...

Exécution ponctuelle

Lorsqu’il est nécessaire d’exécuter une commande (ou un script) une seule fois à un moment précis, il n’est pas utile de définir une tâche planifiée avec Cron. Dans ce cas, la commande at peut être utilisée. Cet outil n’est pas systématiquement installé ; sous Ubuntu par exemple, il est nécessaire d’installer le paquet at :


sudo apt install at
 

De la même manière que Cron, At est composé de plusieurs programmes :

  • atd : le daemon, programme qui fonctionne tâche de fond qui gère l’exécution des tâches programmées.

  • at : la commande pour ajouter une tâche programmée.

  • atq : la commande pour voir la file (« queue ») des tâches programmées.

  • atrm : la commande pour supprimer (« remove ») une tâche programmée.

1. Programmer une tâche

La commande at permet de programmer l’exécution d’une nouvelle tâche, elle est appelée avec en argument la définition du moment auquel la tâche est à exécuter. Cette commande affiche ensuite une invite, où l’on peut détailler la ou les commandes à exécuter. Une fois ces commandes renseignées, on utilise la combinaison de touches [Ctrl] D pour...