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.

Cette documentation est le prolongement logique de la documentation 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.

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).

Sur les claviers français ce serait plutôt AltGr + -.
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.

Sur les claviers français ce serait plutôt AltGr + è.

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

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
Attention toutefois : La commande 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
Plus d'informations sur les versions des logiciels et du matériel directement accessibles via votre navigateur :
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
gnome-device-manager

Avec une interface et benchmark

hardinfo

Pour l'installer : hardinfo
hardinfo

Pour plus d'information, consultez la page dédiée à 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.11gest-ce que ma carte Wifi est compatible 802.11g ??
Qualité du signal reçu -93dbmest-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 )

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.

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)
  • diagnostic_outil.txt
  • Dernière modification: Le 12/11/2023, 15:59
  • par Amiralgaby