Débuter
Matériel recommandé

Vous voulez participer au financement du blog. C’est simple, suivez les liens commerciaux pour faire vos achats. Quelques pourcents qui font toute la différence. Merci à vous !

Kit raspberry pi 4 8GB
Kit Raspberry Pi 4 - 8GB
kit raspberry pi 4
Kit Raspberry Pi 4 - 4GB
raspberry pi 4 2019
Raspberry Pi 4 - 4GB
Cartes micro-SD SDHC v90
Kit Retrogaming Nespi
Kit Retrogaming

Commandes Linux utiles pour Raspberry Pi et le Terminal Raspbian (configurer, installer, mettre à jour)

Commandes utiles linux pour Raspbian
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

La plupart des logiciels que l’on va installer sur le Raspberry Pi OS (ou une autre distribution Linux) disposent d’une interface graphique. Cependant le Terminal de commande reste omni présent dans l’univers Linux. Vous aurez à un moment ou l’autre besoin de lui pour configurer, mettre à jour ou installer un logiciel.

 

Article actualisé le 1er juin 2020

A force de chercher les commandes sur internet, j’ai fini par écrire un petit article qui concentre pas mal de choses utiles au quotidien lorsqu’on travail s’amuse avec un Raspberry

Commandes utiles pour utiliser le Terminal de commande de Raspbian

Raccourcis clavier

  • Copier : Ctrl + Maj + c (Attention à ne pas confondre avec Ctrl + C qui arrête la commande en cours)
  • Coller : Ctrl + Maj + v
  • Tab : Autocompletion du nom de répertoire ou du nom de commande
  • Ctrl + w : Supprime le mot précédant le curseur
  • Alt + d : Supprime le mot suivant le curseur
  • Ctrl + u : Supprime tout ce qui est avant le curseur
  • Ctrl + y : Colle ce qui vient d’être supprimé à l’endroit ou le curseur est positionné

Se déplacer dans l’historique des commandes

Le système enregistre

  • history : affiche l’historique des commandes exécutées
  • Ctrl + flèche droite/gauche : Déplace le curseur d’un mot à l’autre
  • Ctrl + a : Positionne le curseur au début de la ligne de commande
  • Ctrl + e : Positionne le curseur à la fin de la ligne de commande
  • Ctrl + r : Rechercher dans l’historique
  • Flèche haut/bas : Naviguer dans l’historique des commandes exécutées

Comment récupérer les caractéristiques du Raspberry Pi

La commande cat permet de récupérer de nombreuses caractéristiques du Raspberry Pi. Voici ce que vous allez pouvez savoir sur votre Raspberry :

  • cat /proc/cpuinfo : caractéristiques du microprocesseur, modèle, fréquence, numéro de version, nombre de coeurs…
  • cat /proc/meminfo : affiche les informations sur la mémoire du Raspberry Pi (mémoire totale, libre…)
  • cat /proc/partitions : pour connaitre la taille des partitions (y compris la taille de la carte SD)
  • cat /proc/version : version du linux installé

linux raspberry commande cat proc cpuinfo

Comment trouver l’adresse IP du Raspberry Pi

Voici les principales méthodes pour trouver facilement l’adresse IP du Raspberry PI sur le réseau local.

L’utilitaire réseau du bureau Pixel permet de connaitre l’adresse IP qui a été attribuée au Raspberry Pi. Pour cela, il suffit de survoler l’icône (WiFi ou Ethernet) située dans le coin supérieur droit pour le faire apparaître.

Trouver l'adresseIP depuis l'utilitaire réseau du bureau Pixel

Depuis le Terminal, il existe plusieurs commandes linux. La plus facile à retenir est la commande ip a.


La commande ifconfig est obsolète, elle n’est plus installée par défaut sur la distribution Debian.

Trouver l'adresse IP du Raspberry Pi à l'aide de la commande Linux ip a

Cette commande renvoi énormément d’informations techniques assez rebutante lorsqu’on vient du monde Windows ou macOS. Je vous conseille d’utiliser la commande hostname -I qui renvoi s’implement l’adresse IP.

Comment trouver l'adresse IP du Raspberry Pà avec la commande hostname -I

Comment lister les appareils connectés en USB

Si vous faites un peu de domotique, il est parfois nécessaire de connaitre le port USB sur lequel est branché un appareil. Voici une liste de commandes bien utiles. Pour rédiger l’article, j’ai connecté un vieux clavier DELL ainsi qu’un ESP8266 qui me sert de Gateway MySensors.

Commençons tout simplement par lister les appareils connectés en USB avec la commande lsusb. On récupère tous les appareils connectés en USB. Dans mon cas, on retrouve donc le clavier DELL (qui peut aussi être un hub USB) et la Wemos qui est connectée sur le device 6. C’est intéressant de voir que l’adaptateur Ethernet et lui même connecté en USB au RPI.

linux raspberry commande lsusb

Liste des appareils connectés en USB (lsusb)

C’est bien mais on ne connais toujours pas le port tty sur lequel est mappé l’appareil USB. Il existe plusieurs solutions mais la plus simple consiste à débrancher l’accessoire puis le retrancher de nouveau. Ensuite exécutez la commande dmesg -s 1024.

Cette commande permet de récupérer les derniers messages système. Voici ce qu’on obtient par exmple lorsqu’on branche un ESP8266 sur le port USB du Raspberry Pi.

linux raspberry commande dmesg s 1024

Si votre appareil communique via le port série (usb-serial) avec le Raspberry. C’est le cas pour de nombreux appareils domotique DIY (RFXCom, Gateway MySensors, Arduino…), vous pouvez vérifier grâce à la commande ls -l /sys/bus/usb-serial/devices.

pi@raspberrypi:/sys/class/tty/ttyUSB0 $ ls -l /sys/bus/usb-serial/devices
total 0
lrwxrwxrwx 1 root root 0 sep 16 07:42 ttyUSB0 -> ../../../devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0

On retrouve bien l’ESP8266 connectée au port ttyUSB0.

Si vous voulez récupérer plus d’informations, faites utilisez la commande udevadm. Dans l’exemple ci-dessous, on récupère les infos sur le port /dev/ttyUSB0. Si aucun appareil n’est connecté, vous aurez le retour device node not found.

pi@raspberrypi:~ $ udevadm info -a -p  $(udevadm info -q path -n /dev/ttyUSB0)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ch341-uart"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="ch341"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="03"
    ATTRS{authorized}=="1"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceNumber}=="00"

  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="1a86"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="6"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="96mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0254"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="20"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="removable"
    ATTRS{idProduct}=="7523"
    ATTRS{bDeviceClass}=="ff"
    ATTRS{product}=="USB2.0-Serial"

  looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="02"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="0424"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="2mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="5"
    ATTRS{bcdDevice}=="0200"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="56"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="9514"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="1"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{bcdDevice}=="0404"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="3f980000.usb"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="25"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 4.4.11-v7+ dwc_otg_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="DWC OTG Controller"

  looking at parent device '/devices/platform/soc/3f980000.usb':
    KERNELS=="3f980000.usb"
    SUBSYSTEMS=="platform"
    DRIVERS=="dwc_otg"
    ATTRS{hnp}=="HstNegScs = 0x0"
    ATTRS{srp}=="SesReqScs = 0x1"
    ATTRS{regvalue}=="invalid offset"
    ATTRS{hsic_connect}=="HSIC Connect = 0x1"
    ATTRS{guid}=="GUID = 0x2708a000"
    ATTRS{mode}=="Mode = 0x1"
    ATTRS{srpcapable}=="SRPCapable = 0x1"
    ATTRS{regdump}=="Register Dump"
    ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
    ATTRS{ggpio}=="GGPIO = 0x00000000"
    ATTRS{hprt0}=="HPRT0 = 0x00001005"
    ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 380 msecs (38 jiffies)"
    ATTRS{driver_override}=="(null)"
    ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
    ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
    ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
    ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
    ATTRS{busconnected}=="Bus Connected = 0x1"
    ATTRS{hcddump}=="HCD Dump"
    ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
    ATTRS{spramdump}=="SPRAM Dump"
    ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
    ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
    ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
    ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
    ATTRS{devspeed}=="Device Speed = 0x0"
    ATTRS{fr_interval}=="Frame Interval = 0x1d4c"
    ATTRS{rem_wakeup_pwrdn}==""
    ATTRS{bussuspend}=="Bus Suspend = 0x0"
    ATTRS{buspower}=="Bus Power = 0x1"
    ATTRS{hnpcapable}=="HNPCapable = 0x1"
    ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 950 msecs (95 jiffies)"
    ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
    ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
    ATTRS{regoffset}=="0xffffffff"

  looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""

En savoir encore plus avec la commande vcgencmd

La commande vcgencmd permet de récupérer de nombreuses informations sur le firmware du Raspberry. Exécutez la commande vcgencmd commands pour récupérer la liste complète des commandes disponible. La liste peut évoluer à chaque mise à jour du Firmware. Certaines commandes nécessitent un argument complémentaire.

Pour connaître en détail le fonctionnement de chaque commande, allez visiter cette page.

pi@raspberrypi:/sys/class/tty/ttyUSB0 $ vcgencmd commands
commands="vcos, ap_output_control, ap_output_post_processing, vchi_test_init, vchi_test_exit, pm_set_policy, pm_get_status, pm_show_stats, pm_start_logging, pm_stop_logging, version, commands, set_vll_dir, set_backlight, set_logging, get_lcd_info, arbiter, cache_flush, otp_dump, test_result, codec_enabled, get_camera, get_mem, measure_clock, measure_volts, scaling_kernel, scaling_sharpness, get_hvs_asserts, get_throttled, measure_temp, get_config, hdmi_ntsc_freqs, hdmi_adjust_clock, hdmi_status_show, hvs_update_fields, pwm_speedup, force_audio, hdmi_stream_channels, hdmi_channel_map, display_power, read_ring_osc, memtest, dispmanx_list, get_rsts, schmoo, render_bar, disk_notify, inuse_notify, sus_suspend, sus_status, sus_is_enabled, sus_stop_test_thread, egl_platform_switch, mem_validate, mem_oom, mem_reloc_stats, file, vctest_memmap, vctest_start, vctest_stop, vctest_set, vctest_get"

Faisons quelques tests.

Connaître la température du microprocesseur, vcgencmd measure_temp

vcgencmd-measure_temp

La résolution de l’écran branché au Raspberry,  vcgencmd get_lcd_info

vcgencmd-get_lcd_info

Se connecter à distance en SSH

SSH est un protocole de communication sécurisé qui permet de se connecter à distance à un Raspberry Pi via le Terminal (macOS ou Linux) ou par exemple Putty sur Windows.

Par sécurité, SSH est désactivé par défaut. On active SSH depuis le panneau de configuration ou depuis le Terminal

raspbian raspberry pi activer connexion ssh

Pour plus de détails

A LIRE AUSSI :
Activer la connexion SSH pour accéder à un Raspberry Pi à distance

Suivez ce tutoriel pour activer

Pour tout savoir, lisez cet article précédent plus complet. Sinon en résumé, après avoir activé la connexion SSH depuis raspi-config, utilisez Putty (sous Windows) ou ouvrez le Terminal de commande sous Mac et Linux et exécutez

ssh pi@ADRESSE_IP_RPI

ou avec la distribution Raspbian

ssh pi@raspberrypi.local

le mot de passe par défaut est raspberry.

Autres commandes utiles (en vrac)

Connaitre l’état de fonctionnement des services

Un service est un programme qui fonctionne en tâche de fond et qui se lance au démarrage du système (Raspbian ou toute autre distribution Linux).

La commande sudo service --status-all permet de lister les services lancés.

 

raspbian sudo --service-all mongodb runing

D’autres commandes utiles

sudo service <NOM_DU_SERVICE> statusEtat du service
sudo service <NOM_DU_SERVICE> startDémarrer le service
sudo service <NOM_DU_SERVICE> stopArrêter le service
sudo service <NOM_DU_SERVICE> restartRedémarre le service (après une modification d’un fichier de configuration par exemple)

Eteindre le Raspberry (programmer l’heure de l’arrêt)

Ca manque un bouton pour arrêter son Raspberry ! Voici plusieurs commandes bien utiles pour arrêter le Raspberry proprement. N’oublions pas qu’il est impératif d’éteindre le Raspberry avant de le débrancher son peine de détruire la carte SD. Ce serait vraiment dommage de devoir tout réinstaller.

La commande la plus rapide est sudo poweroff qui va arrêter immédiatement le RPI. L’équivalent de poweroff est sudo shutdown now.

sudo poweroff

Si vous avez envie de programmer un arrêt, par exemple à 22h00 avant d’aller vous coucher, utilisez la commande shutdown -h. Par exemple

sudo shutdown –h 22:00

Pour annuler l’heure d’arrêt programmée, sudo shutdown -c.

Empêcher l’écran noir de Raspbian (Jessie ou supérieur)

La mise en veille de l’écran vous agace, voici comment l’empêcher très simplement. Par contre, pensez à la planète, n’oubliez pas d’appuyer sur le bouton de mise sous tension pour arrêter votre écran. Il en a un lui au moins !

Exécutez la commande suivante pour éditer le fichier cmdline.txt et ajoutez consoleblank=0 à la fin de la ligne

sudo nano /boot/cmdline.txt

Redémarrez le Raspberry pour prendre en compte le nouveau paramètre.

Activer le clavier numérique Num Lock dès le démarrage de Raspbian

Chose étrange, le clavier numérique n’est pas activé par défaut au démarrage de Raspbian. Comme il n’y a aucun réglage dans sudo raspi-config pour configurer cela, on va devoir le faire à la main. Ouvrez le fichier configuration du clavier qui se trouve dans le répertoire /etc/kbd/config

sudo nano /etc/kbd/config

Allez presque à la fin du fichier et retirez le # devant LEDS=+num.

Petite astuce au passage, vous pouvez activer l’affichage de l’heure dans le coin supérieur droit de la console en retirant le # devant DO_VCSTIME=yes.

Sauvegardez et redémarrez Raspbian (sudo reboot) pour prendre en compte les nouveaux réglages.

raspbian activer numlock vcstime

Mettre à jour (update) ou mettre à niveau (upgrade) Raspbian

Il existe deux commandes pour mettre à jour le système.

La commande apt-get update permet de mettre à jour les packages du système (fichiers de traduction…)

sudo apt-get update

La commande apt-get upgrade permet de mettre à niveau les paquets vers la version la plus récente Cette commande permet de mettre à jour le firmware du Raspberry Pi par exemple.

sudo apt-get upgrade

Enfin pour mettre à jour la distribution, à chaque mise à jour de Raspbian par exemple. Par contre il faudra peut être aussi mettre à jour certains composants Python manuellement.

sudo apt-get dist-upgrade

 

Mises à jour :

15/04/2020 Commandes utiles pour utiliser le Terminal de commande

3/11/2016 Connaître l’état des services

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 4]

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Accéder directement aux forums

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Ressources utiles
Nous serions ravis de connaître votre avis

      Laisser un commentaire

      Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

      Domotique et objets connectés à faire soi-même