Diagnostic outil
Bien souvent, pour régler les problèmes liés à une incompatibilité de votre matériel ou un mauvais réglage, il faut utiliser un Terminal…
Quelle horreur pour le novice qui se retrouve devant un curseur qui clignote ! Mais rassurez-vous, si vous lisez cette documentation, vous aurez tous les outils nécessaires pour débuter une excellente expérience.
Le Terminal sera votre outil principal de diagnostic.
Toutes ces informations sont présentes avec un man ( syntaxe : man <nom de la commande> ) dans un terminal. Le man vous donnera aussi toutes les options disponibles. Avec un peu de chance, elles seront en français.
Environnement de diagnostic : Le Terminal
Une ligne de commande est un texte, que l'on tape, ou copie-colle dans un Terminal (Applications→Accessoires→Terminal) et que l'on exécute en tapant sur la touche Entrée du clavier.
La ligne de commande est souvent utilisée dans le wiki de la documentation, non pas parce qu'il est impossible de faire sans, mais simplement car il est plus simple de copier-coller des lignes dans un terminal que de décrire un à un tous les boutons sur lesquels on doit cliquer sur une interface graphique…
Le seul problème c'est que le débutant ne sait pas vraiment à quoi servent les différentes lignes de commandes qu'il copie-colle.
Pour apprendre à quoi servent les différentes commandes, commande basique
Pour encore plus de commandes cette page est disponible.
Exécuter le programme dans un terminal va le rendre plus loquace que d'habitude. En général les erreurs s'affichent mais il arrive que certains demandent une options débogage ( -d ). Pour cela faites:
Pour voir les options disponibles :
man <nom du programme>
L'option s'appelle en général debug : <nom_du_programme> --debug ou -d
Par exemple :
Lancer rhythmbox avec un terminal va vous exécuter rhythmbox mais sans la fonction debug ( afficher les messages d'erreurs ), il faut donc ajouter -d pour avoir la fonctionnalité "debug".
rhythmbox -d
Clavier, dis-moi quelles sont tes possibilités !
Et oui, vous novice, vous ne connaissez pas toutes les fonctionnalités d'un clavier. C'est l'outil principal, l'interface ultime. Elle était présente dans les tout premiers ordinateurs, et elle sera là jusqu'à la fin ! Un des soucis des novices, c'est de ne pas savoir comment reproduire certaines commandes ou raccourcis présents dans les documentations et citées par des utilisateurs du forum.
Raccourcis
Voir sur la page dédiée.
Commandes
Alors voyons un peu :
ls | echo
Comment s'appelle la barre verticale au milieu de "ls" et de "echo" ?
Comment vous dites, un L minuscule ? Perdu !! c'est un "pipe" c'est-à-dire une commande qui permet de diriger la sortie de la commande ls dans l'entrée de la commande echo.
Pour le reproduire AltGr + <la touche 6 du pavé alphanumérique> (pour les claviers français) ou AltGr + <la touche 1 du pavé alphanumérique> (pour les claviers belges).
echo `ls ~/`
Comment reproduirez-vous ces espèces de guillemets ?
Comme ca ? ' '
Eh ben non touche spéciale !!
Elles servent à exécuter par un ordre préférentiel, des morceaux de codes avant d'autres.
Pour reproduire : AltGr + <la touche 7 du pavé alphanumérique> (pour les claviers français) ou AltGr + <la touche µ> (pour les claviers belges). Cette manipulation est à faire 2 fois pour que le caractère apparaisse.
Enfin pour avoir un minimum de connaissances sur les commandes les plus basiques et les plus faciles à connaître et à utiliser, je vous encourage vivement à lire cette documentation : console_ligne_de_commande
Commençons par vous prévenir d'un danger
- Voir la documentation complète : commandes_dangereuses
Les outils dont je dispose
Tous ces outils sont des clefs que vous devriez connaître si vous voulez comprendre votre système et résoudre (plus) facilement les problèmes de votre PC sous GNU/Linux. Ces outils peuvent être combinés entre eux dans des scripts, ou utilisés par des programmes.
L'utilisation de la ligne de commande sous GNU/Linux est une méthode qui est très facile d'accès mais très peu connue. Chaque service étant accessible par une commande bien précise avec énormément d'options ce qui permet d'affiner un diagnostic. Malheureusement ces commandes n'ont pas d'interface donc elles ne sont pas disponibles par des clics. Il vous faudra donc vous renseigner sur cette page , avec la commande man ou sur des moteurs de recherche.
Les commandes étant particulièrement riches en informations, il vous sera souvent demandé de les utiliser si vous demandez de l'aide sur le forum, pour connaître les caractéristiques votre configuration.
Voici une première liste qui permet d'avoir toutes les informations nécessaires sur votre matériel et sur votre système :
lspci lsusb lscpu lsmod sudo lshw inxi -Fxz # specs de la machine ip iwconfig iwlist scan cat /etc/network/interfaces lsb_release -a ; echo $DESKTOP_SESSION uname -r -m cat /etc/X11/xorg.conf lsblk -o name,fstype,size,fsused,fsuse%,fsavail,label,mountpoint | grep -Ev "loop" # liste des partitions cat /etc/fstab cat /etc/apt/sources.list | egrep -v "(^#.*|^$)" # pour voir les commentaires enlever le egrep apt-cache policy | grep http | awk '{print $2 $3}' | sort -u # sources avec PPA actifs find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n$1\n"; nl -ba "$1"' _ '{}' \; cat /boot/grub/grub.cfg awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd # liste les utilisateurs grep -oP '},"name":"\K[^"]+' ~/.mozilla/firefox/*.*default*/addons.json # liste des modules Firefox sudo smartctl -s on -a /dev/sda # pour vérifier l'état du 1er disque interne tail -n 10 /var/log/syslog # Derniers Log du système sudo dmesg | tail -n 10 # Derniers Log du noyau sudo apt update && sudo dpkg --configure -a && sudo apt-get install -fy && sudo apt-get autoclean && sudo apt-get autoremove --purge -y && sudo apt full-upgrade -y sudo dpkg -l | grep ^..R # liste des paquets à problème sudo dpkg --purge --force-all NomDuPaquet # suppression des paquets à problème
sudo
permet d'obtenir des informations en mode administrateur. Utilisées seules, vous ne risquez absolument rien. En revanche, si elles sont liées à d'autres commandes, elle peuvent altérer votre système. À titre d'exemple inoffensif, la suite de commande arrête votre connexion Wifi :
sudo modprobe -r ndiswrapper
sudo lshw -html >MyGNULinuxBox.html
Noyau Linux
Avec les commandes
- lsmod - Afficher la liste des modules du noyau chargés en mémoire. Le format est : nom, taille, compteur d'usage, liste des modules l'utilisant. Les informations affichées sont tirées (et donc identiques à celles) de /proc/modules.
- modinfo - Affiche les informations détaillées sur un module donné (tel que listé par lsmod, par exemple). Cette commande est très utile car elle peut fournir des informations concernant les paramètres qu'un module peut supporter pour affiner sa configuration dans certaines situations (permet par exemple de créer des fichiers de configuration par module /etc/modprobe.d/nom_du_module.conf contenant les paramètres indiqués par modinfo. Exemple : "options ath9k nohwcrypt=1").
- modprobe est la commande qui permet de charger dynamiquement (sans redémarrer) un module et ses dépendances pour la gestion d'un matériel bien précis (webcam, wifi, etc.). Exemple : Décharger un module :
sudo modprobe -r <nom_du_module>
- insmod, rmmod sont des commandes qui permettent de faire une seule action (en comparaison de modprobe qui a d'autres options), celle de charger ou décharger (insmod, rmmod respectivement) un module sans ses dépendances.
Les fichiers dont je dispose
- /etc/modules : ce fichier permet d'ajouter des modules à charger manuellement dans le noyau au démarrage. Par exemple ndiswrapper (qui permet de prendre en charge le matériel Wifi). Il suffit d'ajouter le nom du module à charger à la fin du fichier (un module par ligne).
- /etc/modprobe.d/blacklist : ce fichier permet de "blacklister" les modules par défaut du noyau linux, c'est-à-dire d'en empêcher le chargement. En effet, le noyau contient des modules qui sont chargés systématiquement. Si un de ces modules rentre en conflit avec un autre installé manuellement, il est nécessaire d'empêcher son chargement en rajoutant une ligne à la fin du fichier :
blacklist <nomdumodule>
Matériel et Périphérique
Avec les commandes
- inxi -Fz résultats humainement lisible de toutes les caractéristiques de la machine.
- lsusb liste tous les périphériques USB branchés sur votre ordinateur.
- lspci est un utilitaire qui permet d'afficher des informations sur tous les bus PCI et le système et tous les périphériques qui y sont connectés.
- lshw permet d'avoir la configuration matériel détaillée de votre ordinateur
Avec une interface
sysinfo
device manager
Il y a également gnome-device-manager qui est beaucoup plus complet que sysinfo.
Pour l'installer : gnome-device-manager
Avec une interface et benchmark
hardinfo
Réseaux
Avec les commandes
- ip permet de consulter/manipuler les routes, interfaces, réseaux et tunnels du système.
- dhclient permet de lancer une requête dhcp afin de récupérer des paramètres IP auprès du serveur dhcp.
- iwconfig permet de configurer (en dehors des paramètres IP) les caractéristiques d'une connexion Wifi (nom de la borne associée, puissance du signal émis, clé WEP / WPA…). Cette commande permet aussi de voir si son matériel est reconnu par le système d'exploitation.
- Si elle affiche ceci :
eth0 no wireless extensions.
C'est que votre matériel n'est pas reconnu !
- iwlist est la commande pour détecter les réseaux Wifi alentours avec toutes leurs caractéristiques par exemple :
Cell 01 - Address: xx.xx.xx.xx.xx ESSID:"Neuf WiFi" Protocol:IEEE 802.11g Mode:Managed Frequency:2.462 GHz (Channel 11) Quality:4/100 Signal level:-93 dBm Noise level:-96 dBm Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s 12 Mb/s; 48 Mb/s Extra:bcn_int=100 Extra:atim=0
Informations recueillies : | Questions à se poser : |
Nom du réseau: Neuf Wifi | est-ce que je capte bien mon réseau ? est-ce que la diffusion du nom du réseau est activée ? |
Protocole : 802.11g | est-ce que ma carte Wifi est compatible 802.11g ?? |
Qualité du signal reçu -93dbm | est-ce que je suis trop loin de la source ? (au delà de 85 dbm il ne faut pas réver ! |
Encryption key = Cryptage configuré (aucun, wep, wpa …) | est-ce que ma carte est configurée correctement ? cryptage ? Clé identique entre le routeur et la carte ? |
Les fichiers dont je dispose
- /etc/network/interfaces : Ce fichier permet de configurer automatiquement une connexion (réseau internet, local, intranet). C'est LE fichier à consulter en cas de problèmes de connexion. En général il ne contient que les deux lignes de l'interface loopback (lo).
- /etc/resolv.conf : Ce fichier contient l'IP et le domaine du DNS du réseau connecté.
Avec une interface
- Système → Administration → Réseaux
- Système → Administration → Outils réseau
Les fichier de Log
Ce sont des fichiers situés dans le répertoire /var/log
Avec une commande
- sudo dmesg affiche les logs du système sur le matériel et périphérique, leur état de fonctionnement…
Avec une interface
- cliquer l'icône du dash puis saisir journaux système
ou (avec interface Gnome)
- Outils Système → Journaux Système
Durée du démarrage
Mesurer le démarrage du système :
- sudo dmesg affiche les logs et la dernière ligne affichées donne le temps depuis le démarrage du système.
- sudo systemd-analyze affiche la durée de démarrage du système, sans détail.
- sudo systemd-analyze blame affiche la durée des processus lors du démarrage.
- sudo systemd-analyze critical-chain affiche la durée des processus en arborescence lors du démarrage.
Processus
Avec les commandes
- ps permet de lister tous les processus qui tournent sur le système,
- kill permet de tuer un processus dans "les règles de l'art" (avec l'option -9 suivis du PID du processus), cette commande est très utile si vous n'avez pas d'interface graphique.
- pidof permet de récupérer directement le pid d'un processus, il est souvent combiné avec kill : kill -9 `pidof nautilus` (tue le processus nautilus grâce à son pid), cependant killall peut remplacer cette commande barbare.
- top permet de voir les processus tournant "en live", il indique divers renseignements comme l'utilisation de la mémoire… Une version plus puissance existe: htop, plus interactive.
- pstree permet d'afficher les processus sous forme d'arbre montrant la hiérarchie entre les processus parents et enfants. htop permet également cet affichage en temps réel et en interactif.
Avec une interface
- Système → Administation → Moniteur système
Les touches magiques
Que faire lorsque le systeme gèle
Récupérer des données effacées ou endommagées (partition, CDROM, Clé USB : Flash )
Voir la documentation dédiée.
Le diagnostic qui peut vous être demandé de poster dans le forum
Vérifier l'espace occupé par la partition de boot
Faites un copier des commandes suivantes:
echo;echo;echo '[code]uname -a'; uname -a;\ echo '[/code][code]df -Th | grep -Ev "evpts|none|proc|sys|tmpfs|udev|loop" && echo && df -Ti | "devpts|none|proc|sys|tmpfs|udev|loop" ' ;\ df -Th | grep -Ev "devpts|none|proc|sys|tmpfs|udev|loop" && echo && df -Ti | grep -Ev "devpts|none|proc|sys|tmpfs|udev|loop" ;\ echo '[/code][code]dpkg -l | grep -Ei "linux-(g|h|i|lo|si|t)" | sort -k3 | tr -s " " | cut -d" " -s -f1,2,3 | column -s" " -t ' ;\ dpkg -l | grep -Ei "linux-(g|h|i|lo|si|t)" | sort -k3 | tr -s " " | cut -d" " -s -f1,2,3 | column -s" " -t ;\ echo '[/code][code]ls -AsS1 /boot' ; ls -AsS1 /boot ; echo '[/code]'
Collez-les dans le terminal, exécutez-les, faites un "copier" de résultat et collez-le dans la discussion en cours.
Vérifier l'espace disque
Faites un copier des commandes suivantes:
echo;echo;echo "[code]df -lh --type ext4"; df -lh --type ext4;\ echo "[/code][code]df -li --type ext4" ; df -li --type ext4 ;\ echo "[/code][code]du -xm /boot | sort -nr | head -5"; du -xm /boot | sort -nr | head -5 ;\ echo "[/code][code]sudo du -xm /var/log | sort -nr | head -5" ; sudo du -xm /var/log| sort -nr | head -5 ;\ echo "[/code][code]ls -AsS1 /var/log | head -15" ;ls -AsS1 /var/log | head -15 ;\ echo "[/code][code]sudo du /home/$USER -xam --max-depth=1 2>/dev/null | sort -n | tail";sudo du /home/$USER -xam --max-depth=1 2>/dev/null | sort -n | tail ;\ echo "[/code][code]sudo du / -xam --max-depth=1 2>/dev/null | sort -n | tail";sudo du / -xam --max-depth=1 2>/dev/null | sort -n | tail ;\ echo "[/code]"
Collez-les dans le terminal, exécutez-les, faites un "copier" de résultat et collez-le dans la discussion en cours.
Lister les dépôts présents.
Faites un copier des commandes suivantes:
echo;echo;echo '[code]cat /etc/apt/sources.list | grep "^[^#]" '; cat /etc/apt/sources.list | grep "^[^#]";\ echo "[/code][code]ls -l /etc/apt/sources.list.d " ; ls -l /etc/apt/sources.list.d;\ echo "[/code]"
Collez-les dans le terminal, exécutez-les, faites un "copier" de résultat et collez-le dans la discussion en cours.
Ubuntu met beaucoup de temps à s'arrêter.
Au démarrage d'après, faites un copier des commandes suivantes:
echo;echo;echo "[code]grep -E 'Stopping D-Bus|Started Availability' /var/log/syslog "; grep -E 'Stopping D-Bus|Started Availability' /var/log/syslog;\ echo "[/code][code]sed -n '/Stopping D-Bus/,/Started Availability/p' /var/log/syslog " ; sed -n '/Stopping D-Bus/,/Started Availability/p' /var/log/syslog;\ echo "[/code][code]grep -E 'Stopping D-Bus|Started Availability' /var/log/syslog.1 "; grep -E 'Stopping D-Bus|Started Availability' /var/log/syslog.1;\ echo "[/code][code]sed -n '/Stopping D-Bus/,/Started Availability/p' /var/log/syslog.1 " ; sed -n '/Stopping D-Bus/,/Started Availability/p' /var/log/syslog.1;\ echo "[/code]"
Collez-les dans le terminal, exécutez-les, faites un "copier" de résultat et collez-le dans la discussion en cours.
Liste des applications ajoutées
Toutes les applications ajoutées par l'utilisateur, issues des dépôts (officiels et non officiels) ou non :
grep -vxf <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p') <(apt-mark showmanual)
Uniquement les applications ajoutées par l'utilisateur hors dépôts :
apt-show-versions | awk -F':' '/No available version in archive/{print $1}'
Uniquement les applications ajoutées par l'utilisateur depuis les dépôts :
grep -vxf <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p') -f <(apt-show-versions | awk -F':' '/No available version in archive/{print $1}') <(apt-mark showmanual)
Voir aussi
Contributeurs : yurek. forum : https://forum.ubuntu-fr.org/viewtopic.php?pid=1315183