Table des matières

L'importance de la ligne de commande ou CLI (command line)


Administration Système


L’importance de l'invité de commande

Tout d'abord l'invité de commande est primordiale dans l'univers Unix.
Pourquoi, parce-que la commande est justement ce qui défini un système Unix.
Par définition Linux c'est un noyaux permettant de faire fonctionner une machin et la commande c'est ce qui permet à un utilisateur de communiquer avec la machine.
Tout ce qui vient se greffer autour de ce système, comme l'interface X, Gnome, KDE, etc … cela s’appela une distribution Linux.

Oui mais ça sert à quoi la commande ?

Ben y en a des tonnes de commandes, comment faire pour retenir tout leurs fonctions ?

chaque commandes est accompagnées de son manuel

man ls


Deux modes d'acteurs différents

L'utilisateur
aiko@asus:~$
- $ signifie être en simple utilisateur

L'administrateur ou root ou encore Dieu. Ben oui c'est lui qui dispose des pleins pouvoirs sous Unix, il est le Maître absolus ! m(
root@asus:/#
- # signifie être en root ou en su

C'est deux acteurs vont pouvoir se balader dans ce que l'on appel un système de fichiers définit et rangé par une norme que l'on appel FHS File Hierarchy Standard ce qui signifie la standardisation d'une hiérarchie des fichiers dans un systéme.

A partir de maintenant on dira FHS pour signifier le système de fichier

Exemple de FHS:

RépertoireDescriptionExemple d'implémentation de la norme
/On l'appel le root (racine) on ne sait pas aller plus haut. Le root contient toute la hierachie inférieur
/bin/Doit contenir toutes les commandes de base nécessaires au démarrage et à l'utilisation d'un système minimaliste (par exemple : cat, ls, cp, sh) excluant les commandes systèmes et celles réservées aux administrateurs (qui sont plutôt placées dans /sbin/). Le nom du répertoire est tiré de l'abréviation de binaires.
/boot/Chargeur d'amorçage
Exemple de fichiers:
- initrd (image mémoire du ramdisk utilisé par le processus init)
- noyaux
Exemple d'implémentation : Si grub est le chargeur d'amorçage, il y aura le fichier de configuration correspondant grub.conf
/dev/Fichiers correspondant (directement ou non) avec un périphérique (abréviation de device)
- Les fichiers de périphériques :
- périphériques physiques (disque, réseau, bande, disquette) périphériques virtuels ;
- /dev/null
- /dev/zero
Exemple d'implémentation
- Les fichiers de périphériques :
- Périphériques physiques
- IDE (Exemple pour GNU/Linux : /dev/sda, /dev/sdb, /dev/sdc : En effet, dans les versions récentes du noyau Linux, les périphériques IDE ne se nomment plus hdX, mais bel et bien sdX, comme les périphériques SCSI).
- SCSI ; sous GNU/Linux, cela inclut l'USB et le S-ATA ; exemple : /dev/sda, /dev/sdb, /dev/sdc
- Les terminaux :
- /dev/tty, tty0 à tty59
- /dev/console Console initiale
- Carte réseau (sous GNU/Linux, cela correspond aux interfaces réseau eth0, eth1…)\\- Carte son
- Périphérique à bande
- Périphérique série : par exemple modem ou port RS-232.
- Disquette 3 pouces et demi : sous GNU/Linux, /dev/fd0
- Liens symboliques
- Cas typique sous GNU/Linux : /dev/cdrom est un lien symbolique vers le fichier de périphérique correspondant (par exemple : /dev/sr0)
/etc/Fichiers de configuration (et cetera ; rétroacronymie : abréviation de éditable texte configuration, soit configuration éditable en mode texte en français).
/etc/opt/Fichiers de configuration pour les applications installées dans /opt
/etc/X11/Ce répertoire contient les fichiers de configuration pour X11.N.B. : Le client et le serveur X11 peuvent être sur deux ordinateurs différents. Le serveur peut ne pas avoir de carte graphique.
- Pour les ordinateurs utilisant XFree86, le principal fichier de configuration est XF86Config-4 ou XF86Config selon la distribution.
- Pour les ordinateurs utilisant Xorg, le principal fichier de configuration est xorg.conf
/etc/sgml/Fichiers de configuration pour SGML.Sans objet le plus souvent
/etc/xml/Fichiers de configuration pour XML.
/home/Répertoires des utilisateurs (exemple : /home/dupont). Recommandé mais optionnel, car certains systèmes avec beaucoup d'utilisateurs (notamment via NFS) doivent utiliser une structure différente.
/lib/Bibliothèques logicielles nécessaires pour les exécutables de /bin/ et /sbin/ (abréviation de librairies, soit bibliothèques en français).
/lib<qual>/Bibliothèques logicielles essentielles dans un format alternatif. Ces répertoires sont optionnels mais, s'ils existent, leurs noms doivent respecter certaines exigences.
/mnt/Point de montage pour les systèmes de fichiers temporaires (abréviation de mount ou point de montage).
/media/Point de montage pour les médias amovibles (apparu dans FHS-2.3).Parmi les médias amovibles, il y a notamment les CD-ROM et les clés USB.
/opt/Logiciels optionnelsLogiciels non inclus dans la distribution et installés manuellement pour tous les utilisateurs.
/opt/Logiciels optionnelsLogiciels non inclus dans la distribution et installés manuellement pour tous les utilisateurs.
/proc/Système de fichiers virtuel documentant le noyau et les différents processus (abréviation de processes, soit processus en français).
/root/Répertoire de l'Utilisateur root (optionnel mais fortement recommandé).
/sbin/Exécutables pour les administrateurs (abréviation de system binaries, soit binaires système en français).
/srv/Données pour les services hébergés sur le système. Habituellement le contenu web statique ou les fichiers d'un serveur FTP, une base de données…
/tmp/Fichiers temporaires (voir aussi /var/tmp et /run/tmp). Est généralement vidé à chaque démarrage et possède le sticky bit.
/usr/Contient certains répertoires semblables à ceux présents à la racine mais qui ne sont pas nécessaires au fonctionnement minimal du système (usr est l'acronyme de « UNIX System Resources »).
/usr/bin/Binaires exécutables qui ne sont pas déjà présents dans /bin et donc pas indispensables à un système minimaliste.
/usr/include/Entêtes des bibliothèques partagées
/usr/lib/Bibliothèques partagées
/usr/lib<qual>/Bibliothèques partagées dans un format alternatif (optionnel)
/usr/sbin/Binaires pour l'administrateur qui ne sont pas déjà fournis par /sbin
/usr/share/Fichiers indépendants de la plate-forme (non binaires)La documentation :
- répertoire man pour les man (sous GNU/Linux : document au format roff compressé)
- répertoire doc : documentation au format HTML ou autre
/usr/src/Optionnel. Code source divers, généralement limité au noyau et aux bibliothèques système. FHS 2.2 demandait que toutes les sources soient dans ce répertoire, ce que certains Unix continuent de faire bien que ce ne soit plus recommandé.Sources du noyau Linux dans /usr/src/linux/ (spécifique à Linux).
/usr/X11R6/X Window System, X11 version 6.
/usr/local/Hiérarchie tertiaire pour les données locales, spécifiques à l'ordinateur.
/var/Ne contient que des répertoires ou liens symboliques vers d'autres répertoires, ces derniers étant destinés à contenir des fichiers variables divers (voir les sous-répertoires pour les détails). L'objectif est de pouvoir monter le répertoire /usr en lecture seule.
- base de données
- boîte aux lettres de messagerie
- journaux, voir historique
/var/cache/Cache pour des données conservées localement, le plus souvent pour des raisons de performance. Si elles sont encore utiles, les applications doivent pouvoir régénérer ou récupérer toutes ces données même si elles sont effacées.- Serveur DNS BIND pour diminuer l'utilisation du processeur et accélérer certaines requêtes.
- Gestionnaires de paquetages tel que APT dans Debian.
- Tomcat pour conserver divers fichiers générés dynamiquement à partir des fichiers sources.
/var/lock/Fichiers de verrouillage, permettant de connaître quelles ressources sont en cours d'utilisation (voir aussi /run/lock)
/var/log/Fichiers de journalisation (logs en anglais).Exemple sous GNU/Linux : syslog, XFree86.0.log, kern.log, mysql, gdm/:0.log
/var/mail/Boîtes de courriels des utilisateurs.
/var/run/Fichiers temporaires des logiciels en cours d'exécution (voir aussi /run)Exemples : PIDs ou statut des services
/var/spool/Regroupe des répertoires qui contiennent des données en attente de traitement.File d'attente de fichiers à imprimer par CUPS dans /var/spool/cups/
/var/spool/cron/Optionnel sauf pour Linux. Contient les informations pour gérer les tâches planifiées.- cron (tâches périodiques).
- at (tâches planifiées par l'utilisateur pour une exécution unique).
/var/spool/mail/Optionnel et est maintenant habituellement un lien symbolique vers /var/mail (le répertoire utilisé par la plupart des Unix).
/var/spool/mqueue/Courriels en cours de transit sur la machine (optionnel).Courriels en attente d'envoi vers d'autres serveurs ou pour livraison aux utilisateurs locaux.
Sendmail utilise ce répertoire.
/var/tmp/Fichiers temporaires. Contrairement à /tmp, ils ne doivent pas être automatiquement effacés lors d'un redémarrage.Attention, car ceci n'interdit pas l'existence d'une tâche cron qui efface périodiquement les vieux fichiers, par exemple ceux qui n'ont pas été accédés depuis plus de 30 jours.


Se balader dans la FHS


Pour se déplacer dans la FHS c'est vraiment tout simple pour cela on utilise la commande cd (change directory) suivit de la Touche Enter

La base

$ cd /                     va directement à la racine
$ cd /home                 va le répertoire /home
$ cd /home/sniper          va le répertoire /home/sniper


Revenir en arrière

(on est dans /home/sniper)

$ cd ..                    permet de revenir un répertoire en arrière dans /home
$ cd ../..                 permet de revenir à la racine /


Revenir en arrière pour repartir dans un autre répertoire

(on est dans /home/sniper/Musique) et on veut aller dans /etc

en une commande
$ cd ../../../etc/         remonte de 3 répertoires et va dans /etc

ou en deux commandes
$ cd /
$ cd /etc


Revenir dans son répertoire utilisateur /home/sniper à partir de n'importe quel endroit de la FHS (téléportation ;-))

$ cd ~                     et hop on se retrouve direct à la maison


On ne mettra le / uniquement lorsque l'on démarre de la racine !



Lister les Dossiers et les fichiers et connaître leur taille


Infos taille dossiers et fichiers

Lister le contenu d'un dossier avec la commande ls

On se trouve dans /home/sniper et on veut voir le contenu du répertoire (de ou on se trouve)

$ ls             affiche le contenu, répertoire et fichier
$ ls -l          -l affiche le contenu en liste horizontale
$ ls -l -h       -h affiche la taille en méga, giga
$ ls -l -h -a    -a affiche les fichiers et répertoires cachés représentés par un point comme ./ssh


On se trouve dans /home/sniper et on veut voir le contenu du répertoire /etc

ls ../../../etc/  on peut voir à distance ;-)


Connaître la taille totale d'un dossier

$ du -h -s le_dossier


Connaître la taille totale de chaque dossier dans un dossier

$ du -s le_dossier


Connaître la taille des partitions y compris les ressources montées

$ df -h  



Créer un fichier, dossier et les supprimer


La FHS est sensible à la casse ce qui veut dire qu'elle fait la différence entre le A majuscule et le a minuscule ! Ce qui signifie que l'on pourra créer exactement le même dossier ou le fichier Sniper et sniper en ayant le même nom mais différencier par une majuscule ou minuscule !

Création de dossier

mkdir coucou          faire un ls pour voir ce que l'on a fait
mkdir Coucou

Création de plusieurs dossiers dans un dossier

mkdir coucou1/{ok1,ok2}
ls coucou1          faire un ls pour voir ce que l'on a fait

Création de fichier

touch test          faire un ls pour voir ce que l'on a fait
touch Test

Création de plusieurs fichiers dans un dossier

touch coucou1/{file1,file2}
ls coucou1          faire un ls pour voir ce que l'on a fait

Supprimer un dossier

$ rm -r coucou      -r représente la paramètre de récursivité pour supprimer un dossier, tout ce qu'il contient est supprimé

Supprimer un fichier

$ rm test

Renommer un dossier

mv coucou supercoucou

Renommer un fichier

mv test supertest

Déplacer un dossier

mv dir1/ test/dir1

Déplacer un fichier

mv test/file1 test/dir1/   cible vers destination
ls test/dir1/     vérification


Commandes Pratiques


Envoyer le résultat de n'importe quelle commande dans un fichier

$ ls / >> fichier

Connaître son noyau

 $ uname -a
 $ uname -r

Tuer un process par son numéro de process

# kill -9 5692 
 

Tuer un process par son nom

# killall nom_du_process

Créer une base de donnée de tout son système

# updatedb

Rechercher un fichier, dossier

$ locate fichier
$ locate *.png
$ locate *ichi*.jpg


Réseaux


Connaître son adresse IP (il faut être en root)

 # ifconfig

Configurer son adresse IP (il faut être en root)

# ifconfig eth0 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up   (up pour activer)
# route add default gw 192.168.1.254  (on ajoute la gateway par defaut)
# nano -w /etc/resolv.conf     (on ajoute les dns)
  nameserver 208.67.222.222
  nameserver 208.67.220.220


Process


Infos Process en temps réel

Voir les process et la charge cpu en temps réel

$ top

Rechercher un process

$ ps aux | grep skype


Matériel


Pour ceux qui veulent une belle interface graphique, il existe aussi hardinfo

# apt-get install hardinfo

Connaître le nombre et le type de CPU

$ cat /proc/cpuinfo

Connaître la liste du matériel pci

$ lspci

Connaître la liste du matériel usb

$ lsusb

Voir l'activité de son GPU

Pour une nvidia

watch -n 1 nvidia-smi
watch -n 1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"

Administration Système