Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Administration Linux

Comment exécuter un fichier .sh sous Linux : Guide complet pour les débutants et les administrateurs système

Les scripts shell sont l’épine dorsale de l’automatisation Linux. Que vous déployiez une application web, planifiiez des sauvegardes ou configuriez un serveur nouvellement provisionné, les fichiers .sh vous permettent de regrouper des séquences de commandes complexes dans un seul exécutable répétable. Ce guide vous guide à travers chaque méthode pour exécuter des scripts shell dans Linux — de l’exécution basique aux processus en arrière-plan et à la planification cron — avec les meilleures pratiques qui tiennent bon dans les environnements de production.

Qu’est-ce qu’un fichier .sh sous Linux ?

Un fichier .sh est un script en texte brut écrit en langage shell (généralement Bash ou POSIX sh) que le shell Linux interprète et exécute ligne par ligne. Les scripts shell sont utilisés pour :

  • Automatiser les tâches répétitives d’administration système
  • Déployer et configurer des applications
  • Gérer les utilisateurs, les permissions et les systèmes de fichiers
  • Planifier les tâches de maintenance comme les sauvegardes et la rotation des journaux
  • Initialiser les nouveaux serveurs après le provisionnement

Si vous gérez un environnement VPS Hosting ou un Serveur Dédié, les scripts shell sont une compétence indispensable qui vous fera gagner des heures de travail manuel chaque semaine.

Prérequis

Avant d’exécuter tout fichier .sh, assurez-vous que vous avez :

  • Accès à un terminal Linux (local ou via SSH)
  • Un compte utilisateur avec les permissions appropriées
  • Le fichier script déjà sur le système (créé localement ou transféré via SCP/SFTP)

Méthode 1 : Rendre le fichier exécutable avec chmod

Par défaut, les fichiers .sh nouvellement créés ou téléchargés n’ont pas de permissions d’exécution. Avant d’exécuter le script en tant que programme, vous devez explicitement accorder les droits d’exécution en utilisant la commande chmod.

chmod +x script.sh

Pour vérifier que les permissions ont été appliquées correctement :

ls -l script.sh

Vous devriez voir un résultat similaire à :

-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.sh

Les drapeaux x confirment que le fichier est maintenant exécutable par le propriétaire, le groupe et les autres.

> Conseil de sécurité : Si vous souhaitez restreindre l’exécution au seul propriétaire du fichier, utilisez chmod 700 script.sh à la place de chmod +x.

Méthode 2 : Exécuter le Script en Utilisant un Chemin Relatif ou Absolu

Une fois le fichier exécutable, vous pouvez l’exécuter directement depuis le terminal.

Utiliser un Chemin Relatif (Répertoire Courant)

Si le script se trouve dans votre répertoire de travail actuel, préfixez-le avec ./:

./script.sh

Le ./ indique au shell de chercher dans le répertoire courant plutôt que de parcourir le système $PATH.

Utiliser un Chemin Absolu

Si le script est stocké dans un autre emplacement, fournissez son chemin complet :

/home/user/scripts/script.sh

ou

/usr/local/bin/script.sh

L’utilisation de chemins absolus est particulièrement importante lors de l’exécution de scripts à partir de tâches cron ou d’autres contextes automatisés où le répertoire de travail peut différer.

Méthode 3 : Exécuter le Script avec bash ou sh (Aucune Permission d’Exécution Requise)

Vous pouvez invoquer un script shell en appelant explicitement l’interpréteur, même si le fichier n’a pas de permissions d’exécution. Ceci est particulièrement utile pour tester rapidement un script avant de le rendre définitivement exécutable.

bash script.sh

ou, pour les scripts conformes à POSIX :

sh script.sh

Différence Entre bash et sh

CommandeInterpréteurSupporte les Fonctionnalités Spécifiques à Bash
bash script.shGNU BashOui
sh script.shPOSIX sh (souvent dash sur Ubuntu)Non

Si votre script utilise une syntaxe spécifique à Bash comme les tableaux, [[ ]] conditionnels, ou la substitution de processus, utilisez toujours bash plutôt que sh.

Méthode 4 : Exécuter le Script en tant que Superutilisateur (sudo)

Certains scripts nécessitent des privilèges au niveau root pour modifier les fichiers système, gérer les services, installer des packages ou modifier les configurations réseau. Utilisez sudo pour élever les permissions :

sudo ./script.sh

ou transmettez le script directement à bash avec des droits élevés :

sudo bash script.sh

Considérations Importantes en Matière de Sécurité

  • Ne jamais exécuter un script en tant que root sans l’avoir lu au préalable. Un script malveillant ou mal écrit avec accès sudo peut causer des dommages système irréversibles.
  • Préférez exécuter les scripts avec les privilèges minimaux requis.
  • Si un script a seulement besoin d’écrire dans un répertoire spécifique, envisagez d’ajuster les permissions du répertoire plutôt que d’exécuter l’ensemble du script en tant que root.

Méthode 5 : Exécuter le Script en Arrière-plan

Par défaut, l’exécution d’un script dans le terminal bloque votre session jusqu’à ce que le script se termine. Pour les tâches longues — telles que les transferts de fichiers volumineux, les migrations de bases de données ou les constructions de serveur — vous voudrez envoyer le processus en arrière-plan.

Utiliser l’opérateur &

./script.sh &

Le symbole & divise le processus en arrière-plan et rend immédiatement le contrôle à votre terminal. Le shell affiche le PID (Process ID) du travail en arrière-plan, que vous pouvez utiliser pour le surveiller ou l’arrêter ultérieurement.

Maintenir le Script en Exécution Après la Déconnexion avec nohup

Si vous vous déconnectez de SSH, les travaux en arrière-plan lancés avec & se termineront généralement. Utilisez nohup pour éviter cela :

nohup ./script.sh &

La sortie est redirigée vers nohup.out par défaut. Pour spécifier un fichier journal personnalisé :

nohup ./script.sh > /var/log/myscript.log 2>&1 &

Surveiller les Travaux en Arrière-plan

jobs          # List background jobs in the current session
ps aux | grep script.sh   # Find the process by name
kill PID      # Terminate a specific background process

Méthode 6 : Planifier l’exécution de scripts avec Cron

Pour les tâches récurrentes — sauvegardes nocturnes, nettoyages hebdomadaires, vérifications de santé horaires — le planificateur cron intégré de Linux est la solution standard.

Ouvrir l’éditeur Crontab

crontab -e

Syntaxe Cron

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └── Day of week (0–7, Sunday = 0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)

Exemples pratiques de Cron

PlanificationExpression CronCas d’usage
Chaque jour à 2:00 AM0 2 * * *Sauvegarde de base de données nocturne
Chaque lundi à 6:00 AM0 6 * * 1Rotation hebdomadaire des journaux
Chaque heure0 * * * *Vérification de surveillance de disponibilité
Toutes les 15 minutes*/15 * * * *Actualisation du cache
Au redémarrage du système@rebootDémarrer un service ou un script au démarrage

Exemple : Sauvegarde quotidienne automatisée

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Cela exécute backup.sh chaque jour à 2:00 AM et ajoute la sortie standard et les erreurs à un fichier journal pour l’audit.

> Conseil professionnel : Utilisez toujours des chemins absolus dans les entrées cron. Cron s’exécute avec un environnement minimal et peut ne pas avoir accès au même $PATH que votre shell interactif.

Méthode 7 : Sourcer un Script (Exécuter dans le Contexte du Shell Actuel)

Il existe une autre méthode d’exécution à connaître : le sourçage d’un script. Contrairement aux méthodes ci-dessus, le sourçage exécute le script dans la session shell actuelle plutôt que de créer un sous-shell. Cela signifie que toutes les variables ou fonctions définies dans le script persistent dans votre environnement actuel.

source script.sh

ou de manière équivalente :

. script.sh

Ceci est couramment utilisé pour charger des variables d’environnement, activer des environnements virtuels ou appliquer des modifications de configuration à la session actuelle.

Dépannage des erreurs courantes

Message d’erreurCause probableSolution
Permission deniedLe fichier n’a pas la permission d’exécutionExécutez chmod +x script.sh
No such file or directoryChemin incorrect ou fichier manquantVérifiez le chemin avec ls et pwd
bad interpreter: No such file or directoryLigne shebang incorrecte (par exemple, fins de ligne Windows)Exécutez dos2unix script.sh pour corriger les fins de ligne
command not foundScript non dans $PATH et sans préfixe ./Utilisez ./script.sh ou le chemin absolu complet
syntax error near unexpected tokenScript écrit pour bash mais exécuté avec shUtilisez bash script.sh explicitement

Meilleures pratiques pour écrire et exécuter des scripts Shell

Suivre ces pratiques rendra vos scripts plus sûrs, plus maintenables et plus faciles à déboguer — en particulier dans les environnements serveur.

1. Commencez toujours par une ligne Shebang

La première ligne de chaque script doit déclarer l’interpréteur :

#!/bin/bash

ou pour une portabilité maximale :

#!/usr/bin/env bash

2. Activez le mode strict

Ajoutez ceci près du haut de chaque script de production :

set -euo pipefail
  • -e — Quitter immédiatement si une commande échoue
  • -u — Traiter les variables non définies comme des erreurs
  • -o pipefail — Détecter les défaillances dans les commandes en pipeline

3. Lisez le script avant de l’exécuter

N’exécutez jamais un fichier .sh provenant d’une source externe ou non fiable sans en examiner d’abord le contenu :

cat script.sh

ou ouvrez-le dans un éditeur de texte. C’est particulièrement critique lors de l’exécution avec sudo.

4. Utilisez les commentaires généreusement

#!/bin/bash
# backup.sh — Daily backup script for /var/www
# Author: sysadmin@example.com
# Last updated: 2024-06-10

# Define source and destination directories
SOURCE="/var/www"
DEST="/mnt/backup"

5. Organisez les scripts dans des répertoires dédiés

RépertoireUtilisation recommandée
/usr/local/bin/Scripts accessibles à tous les utilisateurs au niveau du système
~/scripts/ ou ~/bin/Scripts personnels de l’utilisateur
/opt/scripts/Scripts d’automatisation spécifiques à l’application
/etc/cron.daily/Scripts à exécuter quotidiennement via cron

6. Enregistrez la sortie du script

Redirigez toujours la sortie vers un fichier journal pour les scripts s’exécutant sans surveillance :

./script.sh >> /var/log/script.log 2>&1

7. Testez les scripts dans un environnement sûr d’abord

Avant de déployer un script sur un serveur de production, testez-le sur un environnement de staging ou une instance VPS jetable où les erreurs ne causeront pas de temps d’arrêt.

Exécution de scripts Shell sur un serveur Linux : Considérations pratiques

Lors de l’exécution de scripts sur un serveur Linux distant — qu’il s’agisse d’un environnement partagé ou d’une machine dédiée — quelques facteurs supplémentaires entrent en jeu :

  • Accès SSH : La plupart des scripts côté serveur s’exécutent via SSH. Des outils comme screen ou tmux vous permettent de maintenir des sessions persistantes afin que les scripts de longue durée survivent aux déconnexions.
  • Permissions utilisateur : Dans les environnements d’hébergement partagé, votre capacité à exécuter des scripts peut être limitée. Un VPS avec cPanel vous donne un accès root complet et un contrôle total sur l’exécution des scripts.
  • Déploiements automatisés : Combinez les scripts shell avec les tâches cron pour automatiser les déploiements, les renouvellements de certificats (particulièrement utile avec les Certificats SSL), et les tâches de maintenance de routine.
  • Variables d’environnement : Les scripts exécutés via cron ou SSH peuvent ne pas hériter de l’environnement de votre shell interactif. Définissez toutes les variables nécessaires explicitement dans le script ou sourcez un fichier de profil.

Référence rapide : Toutes les méthodes en un coup d’œil

MéthodeCommandeCas d’utilisation
Exécuter avec permissionchmod +x script.sh && ./script.shExécution standard
Exécuter avec bashbash script.shAucune permission d’exécution requise
Exécuter avec shsh script.shScripts compatibles POSIX
Exécuter en tant que rootsudo ./script.shScripts nécessitant des privilèges élevés
Exécuter en arrière-plan./script.sh &Exécution non-bloquante
Exécuter de manière persistantenohup ./script.sh &Survivre à la déconnexion SSH
Planifier avec croncrontab -eTâches automatisées récurrentes
Sourcer le scriptsource script.shAppliquer les modifications au shell actuel

Conclusion

L’exécution de fichiers .sh dans Linux est une compétence fondamentale qui déverrouille toute la puissance de l’automatisation système. Le flux de travail principal est simple : accordez la permission d’exécution avec chmod +x, puis exécutez le script avec ./script.sh ou bash script.sh. Pour les environnements de production, combinez les chemins absolus, le mode strict, la journalisation et la planification cron pour construire des pipelines d’automatisation robustes et fiables.

Si vous gérez des scripts sur un serveur, la qualité de votre infrastructure d’hébergement est importante. L’hébergement VPS et les serveurs dédiés d’AlexHost vous donnent un accès root complet, une disponibilité stable et les performances dont vous avez besoin pour exécuter les charges de travail d’automatisation en toute confiance — que vous planifiiez des sauvegardes nocturnes, déployiez des applications ou gériez des flux de travail multi-scripts complexes.