Exercices guidés préparatoires


Exercice 1 : Liens symboliques et liens physiques

Objectif : Comprendre la différence entre un lien symbolique et un lien physique.

1. Création d'un fichier texte :

cd ~
echo "Ceci est un test" > original.txt

2. Lien symbolique :

mkdir lien_symbolique_test
ln -s ~/original.txt ~/lien_symbolique_test/symb_link.txt
cat ~/lien_symbolique_test/symb_link.txt

3. Modification du fichier original :

echo "Ligne ajoutée après coup" >> original.txt
cat lien_symbolique_test/symb_link.txt

Vous devriez voir la nouvelle ligne dans le lien symbolique.

4. Lien physique :

mkdir lien_physique_test
ln ~/original.txt ~/lien_physique_test/hard_link.txt

ln sans -s crée un lien physique.

5. Test de suppression/renommage :

Renommez ou supprimez original.txt :

mv original.txt original_renamed.txt

Vérifiez le contenu du lien symbolique et du lien physique :

cat lien_symbolique_test/symb_link.txt
cat lien_physique_test/hard_link.txt

Observez le comportement différent (le lien symbolique est cassé si on enlève totalement l'original, le lien physique reste utilisable).


Exercice 2 : Planification de tâches avec Cron

Objectif : Découvrir la planification automatique de tâches répétitives.

1. Ouvrir la crontab :

crontab -e

2. Ajouter une tâche qui écrit la date dans un fichier toutes les minutes :

* * * * * echo "$(date): Tâche cron exécutée." >> /home/<user>/cron_test.log

Remplacez <user> par votre nom d'utilisateur.
Sauvegardez et quittez l'éditeur.

3. Vérifier le fichier après quelques minutes :

tail -f /home/<user>/cron_test.log

4. Modifier la tâche pour qu'elle s'exécute à une heure précise :

Par exemple, tous les jours à 10h30 :

30 10 * * * echo "Tâche à 10h30" >> /home/<user>/cron_test.log

5. Désactiver la tâche en la supprimant de la crontab ou en la commentant :

crontab -e
# * * * * * echo "$(date): Tâche cron exécutée." >> /home/<user>/cron_test.log

Exercice 3 : Personnalisation du Shell avec les alias

Objectif : Simplifier l'utilisation de commandes favorites.

1. Ouvrir le fichier de configuration (pour Bash, souvent ~/.bashrc ou ~/.bash_aliases) :

nano ~/.bashrc

2. Définir un alias :

alias ll='ls -lh --color=auto'

Sauvegardez et quittez.

3. Recharger la configuration :

source ~/.bashrc

4. Tester l'alias :

ll

Vous devriez voir un ls détaillé avec tailles lisibles et couleurs.

5. Créer un alias pour aller dans un répertoire :

alias proj='cd /path/to/mon_projet'
source ~/.bashrc
proj

Vérifiez que vous êtes bien dans le dossier /path/to/mon_projet.


Exercice 4 : Manipulation des variables d'environnement

Objectif : Créer, modifier et exploiter des variables d'environnement.

1. Créer une variable dans le shell courant :

MY_VAR="Hello World"
echo $MY_VAR

2. Afficher la variable :

echo $MY_VAR

Si vous ouvrez un nouveau terminal, la variable n'existe plus.

3. Rendre la variable persistante :

echo 'export MY_VAR="Hello Permanent World"' >> ~/.bashrc
source ~/.bashrc
echo $MY_VAR

4. Ouvrir un nouveau terminal :

Vérifiez que MY_VAR est toujours défini :

echo $MY_VAR

5. Supprimer ou modifier la variable dans ~/.bashrc si vous souhaitez la changer :

Modifiez la ligne correspondante puis rechargez.


Exercice 5 : Observation et analyse du réseau

Objectif : Lister et analyser les connexions réseaux actives.

1. Lister les connexions actives (TCP, UDP) :

netstat -tulnp # Sur certaines distributions
# ou
ss -tulnp # Plus moderne

-tulnp : TCP, UDP, Listening, numeric, process name.

2. Filtrer les connexions sur le port 22 :

netstat -tulnp | grep ":22"
# ou
ss -tulnp | grep ":22"

3. Lancer une requête ping dans un autre terminal :

ping 8.8.8.8

Revenez au premier terminal pour voir si des connexions apparaissent.

4. Afficher les statistiques réseau (envoyé/reçu) :

ifconfig # Sur certaines distributions
# ou
ip -s link

5. Vérifier en root :

sudo netstat -tulnp

Vous aurez éventuellement plus d'informations.


Exercice 6 : Comparaison de fichiers (hash et différences)

Objectif : Comparer l'intégrité de fichiers et voir les différences textuelles.

1. Créer deux versions d'un fichier texte :

echo "Première version du fichier" > version1.txt
cp version1.txt version2.txt
echo "Ligne différente" >> version2.txt

2. Comparer les contenus :

diff version1.txt version2.txt

3. Calculer le hash (par exemple SHA256) :

sha256sum version1.txt > hash_v1.txt
cat hash_v1.txt

4. Modifier le contenu de version1.txt :

echo "Une petite modification" >> version1.txt
sha256sum version1.txt

Comparez le nouveau hash avec le hash enregistré dans hash_v1.txt.

5. Constater les différences :

diff version1.txt version2.txt

Exercice 7 : Gestion des dates et heures en BASH

Objectif : Manipuler la date et l'heure.

1. Afficher la date en format complet :

date

2. Afficher seulement année-mois-jour :

date +"%Y-%m-%d"

3. Stocker la date dans une variable :

CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S")
echo $CURRENT_DATE

4. Générer un fichier log avec la date :

touch "log_${CURRENT_DATE}.txt"
ls

5. Créer un script qui affiche un message selon l'heure :

#!/bin/bash
HOUR=$(date +"%H")
if [ $HOUR -lt 12 ]; then
    echo "Bonjour !"
else
    echo "Bon après-midi ou bonsoir !"
fi

Rendez-le exécutable et testez-le à différentes heures.


Exercice 8 (Variante) : Redirection avancée et gestion des flux

Objectif : Gérer la sortie standard, la sortie d'erreur et l'entrée standard.

1. Rediriger la sortie standard :

ls -l > sortie.txt

cat sortie.txt pour vérifier.

2. Rediriger la sortie d'erreur :

ls /dossier/inexistant 2> erreur.txt
cat erreur.txt

3. Fusionner sortie standard et erreur dans un seul fichier :

ls /dossier/inexistant > tout.txt 2>&1
cat tout.txt

4. Rediriger l'entrée standard :

cat < sortie.txt

5. Tester dans un script :

#!/bin/bash
echo "Redirection standard et erreur"
ls /dossier/inexistant 1>resultat.txt 2>erreur.txt

Vérifiez le contenu de resultat.txt et erreur.txt.


Exercice 9 : Vérification de l'utilisation du système

Objectif : Connaître la charge système, l'utilisation CPU/RAM et la place disque.

1. Afficher la charge du système :

uptime
# ou
w
# ou
cat /proc/loadavg

2. Lister les processus gourmands en CPU/mémoire :

top
# ou
htop

3. Afficher l'utilisation mémoire :

free -h

4. Vérifier la place disponible :

df -h

5. Repérer le dossier le plus gros dans votre HOME :

du -sh ~/*

Ordonné par taille :

du -sh ~/* | sort -h

Exercice 10 : Maintenance de logs et rotation

Objectif : Gérer des fichiers de logs en rotation.

1. Créer un fichier de log :

echo "Démarrage du log" > test.log

2. Ajouter régulièrement du texte (par exemple via cron) :

# Dans crontab -e :
* * * * * echo "$(date): nouveau message" >> /home/<user>/test.log

3. Simuler la rotation (renommer le log et en créer un nouveau) :

mv test.log "test_$(date +%Y-%m-%d_%H-%M-%S).log"
touch test.log

4. Stocker l'ancienne version dans un répertoire dédié :

mkdir -p logs_archives
mv test_*.log logs_archives/

5. Configurer logrotate (optionnel, si vous voulez utiliser l'outil dédié) :

Créez un fichier de config dans /etc/logrotate.d/mon_log et définissez les règles de rotation.


⬆️ Retour en haut de la page