Comment controler une machine virtuelle avec Bash (Linux) pour planifier l’execution de scripts ?

Il est utile pour automatiser des tâches de traitement de données récurrentes (Extraction, Transformation, Chargement) de demander à une machine virtuelle (qui est dans un datacenter connecté en permanence) de les réaliser automatiquement (le plus souvent la nuit pour avoir les données finales au petit matin).

Pour faire cela, il s’agit de programmer les tâches dans la machine virtuelle. Le plus souvent, il s’agira de machines qui tournent sous Debian GNU/Linux (qui est open source et libre). La programmation se fera à l’aide de lignes de commandes à saisir dans le terminal (pas d’interface graphique pour optimiser le travail). Le langage à utiliser sera Bash (Bourne Again Shell).

Je mets ci-dessous les commandes les plus utiles avec Bash :

Pour explorer les fichiers :

  • Pour lister les dossiers et fichiers (de l’emplacement choisi) : ls
  • Pour choisir un dossier (pour changer d’emplacement) : cd #nom-dossier#
  • Pour retourner à la racine (le niveau le plus supérieur) : cd /
  • Pour remonter au dossier du niveau supérieur : cd ..
  • Pour combiner en 1 seule ligne de commande l’action de choisir un nouveau dossier et lister son contenu : cd #nom-dossier# && ls
  • Pour voir le contenu d’un fichier : cat #nom-fichier#
  • Pour voir le contenu d’un fichier avec nano qui est plus pratique pour parcourir/modifier un fichier : nano #nom-fichier#
  • Pour lancer une recherche de fichier et connaitre l’emplacement des fichiers correspondants : locate #nom-fichier#
  • Pour créer un dossier : mkdir
  • Pour copier un fichier : cp #nom-fichier-a-copier# #nom-fichier-qui-sera-cree-lors-copie#
  • Pour deplacer un fichier vers un autre dossier : mv #nom-fichier# #dossier-destination#/
  • Pour supprimer un fichier : rm #nom-fichier#
  • Pour créer un fichier (ou completer un fichier existant) : touch #nom-fichier#

Pour executer un script :

  • Pour lancer l’execution d’un script (par exemple : mon-script.sh) (pour info, pour rendre un script bash executable, il est conseillé de mettre en premiere ligne du fichier !/bin/bash) : #nom-script-avec-son-extension#
  • Pour lancer un script python, il est possible de demander l’execution d’un script bash dont le code fera appel à python (par ex: python mon-script-python.py)
  • Pour lancer un script qui continuera de s’executer même après notre déconnexion de la machine virtuelle (déconnexion de l’utilisateur) : nohup #nom-script-avec-son-extension#
  • Pour certaines commandes, il est necessaire d’avoir les droits, sudo permet de se déclarer comme un utilisateur avec des droits (il est alors demandé de saisir le mot de passe correspondant à l’utilisateur) : sudo #commande#
  • Pour demander l’execution d’une commande en arriere plan et pouvoir continuer d’en saisir d’autres : #commande# &

Pour planifier l’execution de scripts :

  • La planification de tâches se fait avec des cronjobs et une crontable
  • Pour voir les cronjobs en cours (liés à notre utilisateur) : crontab -l
  • Pour voir la crontab d’un utilisateur (les cronjobs qui sont planifiés) : crontab -u #nom-utilisateur# -l
  • Les cronjobs peuvent aussi être inscrits dans un fichier crontab, pour voir le contenu du fichier crontab : less /etc/crontab
  • Pour ajouter/supprimer un cronjob d’une crontab (attention la suppression est irreversible) (l’edition peut se faire avec nano, 1 ligne correspond à un cronjob) : crontab -u #nom-utilisateur# -e
  • Exemple d’un cronjob (qui execute un script de sauvegarde tous les jours à 1h10) : 10 1 * * * /root/backup.sh

Pour écrire/modifier un script (après l’avoir ouvert avec nano) :

  • En bas de la fenetre nano, des raccourcis sont précisés. A savoir « ^ » signifie « CTRL + ». Par exemple « ^X » signifie « CTRL + X ».
  • CTRL+O : pour enregistrer les modifications
  • CTRL+X : pour quitter nano (si il y a des modifications non enregistrées, il sera demandé si on souhaite les enregistrer, repondre oui avec « Y » et non avec « N »)
  • CTRL+W : pour rechercher du texte
  • CTRL+W puis CTRL+R : pour recherche du texte et le remplacer
  • ALT+/ : pour aller à la dernière ligne du fichier

Pour installer des paquets/logiciels :

  • Pour telecharger un paquet et l’installer (si il est present sur un depot apt) : sudo apt-get install #nom-paquet# (par exemple pour installer nano : sudo apt-get install nano)

Pour + d’infos :

https://www.malekal.com/bash-linux/

0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *