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
- ln -s crée un lien symbolique.
- Vérifiez le contenu :
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.
↑ Haut de page