Table des matières
L'importance de la ligne de commande ou CLI (command line)
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 ?
- administrer une machine qui n'a pas d'interface X
- relancer un X lorsqu'il à planter sans redevoir rebooter la machine
- exécuter des taches en consommant beaucoup moins de process
- un tas de choses beaucoup plus rapide qu'en passant par un interface
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
- il a le pouvoir de supprimer les dossiers se trouvant uniquement dans son répertoire qui lui appartient uniquement, donc impossible d'aller mettre la zone sur le système
- il ne peut rien administrer
- il ne peut rien installer (même des virus
) - prenons l'exemple avec l'utilisateur sniper (certains se reconnaîtront
) son répertoire de travail se trouve dans /home/sniper
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 !
root@asus:/#
- # signifie être en root ou en su
- il peut exactement TOUT faire comme crasher le système si il veut (le kamikaze !)
- son répertoire de travail se trouve dans /root
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épertoire | Description | Exemple 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 optionnels | Logiciels non inclus dans la distribution et installés manuellement pour tous les utilisateurs. |
| /opt/ | Logiciels optionnels | Logiciels 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"
