Outils pour utilisateurs

Outils du site


linux-vrac

Linux: Le gros bloc-note

Je note dans cette page, en vrac, diverses astuces pour Linux. Certaines évidentes, d'autres un peu moins. Ça me sert de bloc-note. Et je le publie: On ne sait jamais, ça pourrait aider d'autres personnes. Certaines astuces peuvent être spécifiques à une distribution.

Étant donnée la grande variété des distributions et environnements de bureau, il est possible que certaines astuces dans cette page ne fonctionnent pas avec votre distribution.
  • apropos est votre ami:
    • Voir les outils concernant pdf présents sur votre système ?
      apropos pdf
  • Et tldr aussi:
    > tldr tar
    tar
    Archiving utility.
    Often combined with a compression method, such as gzip or bzip.
    
     - Create an archive from files:
       tar cf {{target.tar}} {{file1 file2 file3}}
    
     - Create a gzipped archive:
       tar czf {{target.tar.gz}} {{file1 file2 file3}}
    
     - Extract an archive in a target folder:
       tar xf {{source.tar}} -C {{folder}}
    
     - Extract a gzipped archive in the current directory:
       tar xzf {{source.tar.gz}}
    
     - Extract a bzipped archive in the current directory:
       tar xjf {{source.tar.bz2}}
    
     - Create a compressed archive, using archive suffix to determine the compression program:
       tar caf {{target.tar.xz}} {{file1 file2 file3}}
    
     - List the contents of a tar file:
       tar tvf {{source.tar}}
    
     - Extract files matching a pattern:
       tar xf {{source.tar}} --wildcards {{"*.html"}}
  • Votre Wifi ne fonctionne pas bien ? Vous avez peut-être oublié de régler la région "France" pour les fréqences (du coup, les canaux 11/12/13 sont peu ou pas accessibles).
    • Vérifier la valeur: iw reg get. Si vous ne voyez pas Country: FR c'est que ce n'est pas correctement réglé.
    • Modifier le réglage à la volée: sudo iw reg set FR, mais cela ne persiste pas au redémarrage.
    • Pour que la valeur persiste, modifiez le paramètre REGDOMAIN dans le fichier /etc/default/crda. Mettez:
      REGDOMAIN=FR
  • Voir la progression d'une longue commande en cours:
    • Vous avez lancé un dd ou un tar très long, et vous ne savez pas où il en est ? Lancez:
      sudo progress -m
    • progress fonctionne avec cp,mv,dd,tar,gzip,7z,rsync…
    • Si vous utilisez -M, progress ne quittera pas et attendra un autre processus.
    • Dans rsync, en plus de l'option --progress (qui vous donne la progression par fichier), vous pouvez utiliser --info=progress2 --no-inc-recursive qui vous donnera la progression totale de votre transfer.
  • Créer des archives compressées : Créer une archive compressée c'est simple, mais c'est toujours bon de se rappeler la syntaxe:
    • Créer une archive:
      tar cvfz archive.tgz dossier/
      • Mais si vous voulez un tar survitaminé qui va beaucoup plus vite, utilisez pigz:
        tar cvf - dossier/ | pigz > archive.tgz
      • ou:
        tar cvf archive.tgz -I pigz dossier/
      • pigz est comme gzip, mais qui fonctionne en multi-coeurs.
      • Exemple pratique: 1,1 Go de données à compresser. Avec le tar/cvfz: 43,7 secondes. Avec le tar/pigz: 16,3 secondes (!).
    • Décompresser:
      tar xvf archive.tgz
    • Exclure des types de fichiers:
      tar cvfz archive.tgz dossier/ --exclude=*.mp3
    • Exclure des répertoires:
      tar cvfz archive.tgz dossier/ --exclude=chemin/relatif
  • gzip/bzip2 beaucoup plus rapides (multi-coeurs):
    • sudo apt install pigz pbzip2
    • pigz/pbzip2 ont une syntaxe compatible avec gzip/bzip2.
    • Dans .bashrc mettre:
      alias gzip='pigz'
      alias bzip2='pbzip2'
  • Besoin de compresser un répertoire le plus rapidement possible ?
    • Au lieu d'utiliser tar avec gzip, prenez lzo. Il est extrêmement rapide. À titre d'exemple, avec 1,1 Go de données sur un core-i7: tar/gzip prend 40 secondes, tar/lzo prend 3,7 secondes. (Pour une taille finale: tar/gz:754 Mo, tar/lzo:849 Mo)
    • sudo apt install lzop
    • Compresser:
      tar --lzop -cvf archive.tar.lzo dossier/
    • Décompresser:
      tar xvf archive.tar.lzo
    • lzo compresse un peu moins bien que gzip, mais il est 5 fois plus rapide (à tel point que le goulot d'étranglement n'est plus votre processeur, mais l'I/O disque).
    • (lz4 est en théorie un peu plus rapide que lzo, mais pas forcément disponibles partout.)
  • Taper un É majuscule ? : Appuyez sur CapsLock puis é. Ben oui c'est tout con. Même chose pour Ç, À, Ê, È, Ô… : pensez juste à activer CapsLock.
    • Pour « et », c'est AltGr+Z et AltGr+X
  • Entrer des caractères Unicode: Ctrl+⇧ Maj+U et tapez la valeur Unicode en héxadécimal.
    • Essayez ! Ctrl+⇧ Maj+U+2705+ESPACE : ✅
  • Déplacer une fenêtre: Faites Alt+clic gauche pour déplacer une fenêtre en cliquant n'importe où à l'intérieur.
  • Voir les disques montés: C'est beaucoup plus lisible comme ça: mount | column -t
    • Encore plus lisible ? Essayez findmnt : il va tout afficher de manière hiérarchique.
  • Voir les disques/partitions montables: Plusieurs possibilités:
    • lsblk
    • sudo fdisk -l
    • sudo inxi -Po
    • sudo gparted (outils graphique)
  • Réduction de l'utilisation du swap (1)
    • Faire:
      sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'
    • Rebooter pour prendre en compte, ou faire sudo sysctl -p
    • Cela va réduire la propension du système à swapper. Par défaut ce paramètre est souvent à 60, mais en le passant à 10 le système attendra beaucoup plus avant de commencer à swapper.
  • Réduction de l'utilisation du swap (2)
    • sudo apt install zram-config, rebootez, et c'est tout. Les segments de mémoire compressés seront utilisés en priorité sur le swap disque. (Vous pouvez voir les /dev/zramX quand vous faites cat /proc/swaps).
    • C'est tellement efficace, que sur une machine avec 4 Go de RAM sur laquelle on lance plein de programmes au point d'atteindre 1,1 Go de swap utilisé, aucun octet n'a commencé à être écrit dans le swap sur disque !
    • zram est utile quelle que soit la quantité de RAM que vous avez en réduisant à néant les lectures/écritures dans le swap disque. Le swap zram est infiniment plus rapide qu'un swap disque (quel que soit votre type de disque) et cela réduit l'usure des SSD.
  • /tmp en tmpfs:
    • Afin d'éviter les écritures inutiles sur disque, je vous recommande chaudement de mapper votre répertoire /tmp en tmpfs au lieu du disque même si vous n'avez pas beaucoup de mémoire vive (oui, même juste 1 Go). Si vous avez un disque dur c'est plus rapide et si vous avez un SSD, ça réduit son usure. Ajoutez à votre /etc/fstab:
      tmpfs /tmp tmpfs defaults,relatime,mode=1777,nosuid,size=4196M 0 0
      • N'hésitez pas à mettre une valeur importante pour size: tmpfs ne consomme pas de RAM tant qu'on ne met rien dedans.
      • Si les applications ont vraiment besoin de plus de RAM, tmpfs leur laissera la place en swappant ses données.
  • Voir les ports ouverts et quelles applications les ont ouverts:
    • sudo netstat -pntul
    • ou:
      sudo ss -pntul
  • Partage rapide de fichiers par HTTP : Un serveur web en 10 secondes.
    • Ouvrez un terminal dans le répertoire à partager.
    • Tapez (pour Python3) :
      python3 -m http.server 5555
      • Si vous n'avez que Python2, c'est python -m SimpleHTTPServer 5555
    • Et c'est tout. Le répertoire sera accessible par http://adresseip:5555/
    • Pressez Ctrl+C pour arrêter le partage.
  • Lancer une tâche de fond avec la priorité CPU et disque minimale (afin qu'elle ralentisse le moins possible les autres programmes):
    • Ajoutez à votre .bashrc:
      alias ni='nice -n 19 ionice -c3'
    • Puis lancez n'importe quel programme en le préfixant par ni:
      ni tar cvfz monarchive.tgz monrepertoire/
  • Mettre automatiquement un programme en arrière plan quand il est lancé: Par exemple pour 7z ouvrez un terminal, lancez cette commande et laissez le terminal ouvert:
    watch "renice 19 -p $(pgrep 7z)"
  • Un programme prend trop de CPU ? Vous voulez lui limiter le pourcentage de CPU qu'il consomme ? Utilisez cpulimit:
    cpulimit -e nomDuProgramme -l 25 -b
    • -e nomDuProgramme ou -P cheminCompletDuProgramme
    • -l 25 pour 25% de CPU
    • -b pour mettre cpulimit en tâche de fond. Sans ça, il tourne en avant-plan et vous pouvez l'arrêter avec Ctrl+C (pratique pour limiter temporairement un programme)
  • Lancer un script au démarrage du système:
    • Si vous êtes sous systemd, /etc/rc.local n'est plus utilisé, donc pour que votre script shell soit lancé au démarrage du système, mettez-le par exemple dans /opt/scripts/monscript.sh, puis faites sudo crontab -e et ajoutez la ligne:
      @reboot /opt/scripts/monscript.sh
  • Tracer tous les accès d'une application à mes fichiers perso (remplacez LEPROGRAMME par votre programme):
    strace -e trace=file LEPROGRAMME 2>&1 | grep "/home" > trace.log
  • Plus puissant que strace ? sysdig (sudo apt install sysdig sysdig-dkms ; essayez: sudo sysdig proc.name=cat et de faire un cat dans une autre fenêtre).
  • Savoir quelle application verrouille un fichier ou un répertoire:
    sudo lsof | grep NOMFICHIER
  • Gestion des services par System-V, Upstart et systemd:
    • Certains services sont gérés par System-V (scripts dans /etc/init.d), d'autres par Upstart (scripts dans /etc/init) et d'autres par systemd. La plupart des distributions récentes utilisent systemd.
    • System-V:
      • Lister les services: sudo service --status-all (+ démarré, - non démarré, ? status inconnu)
      • Démarrer/arrêter un service: sudo service <servicename> start / sudo service <servicename> stop
      • Activer/désactiver un service: sudo update-rc.d <servicename> enable / sudo update-rc.d <servicename> disable
    • Upstart:
      • Lister les services: sudo initctl list
      • Démarrer/arrêter un service: sudo initctl stop <servicename> / sudo initctl start <servicename>
      • Désactiver un service: Créer un fichier <servicename>.override contenant le mot "manual". Exemple: sudo bash -c 'echo "manual" > /etc/init/avahi-daemon.override'
    • systemd:
      • Lister les services: sudo systemctl list-unit-files --type=service
      • Démarrer/arrêter un service: sudo systemctl start <servicename> / sudo systemctl stop <servicename>
      • Activer/désactiver un service: sudo systemctl enable <servicename> / sudo systemctl disable <servicename>
  • Astuce rapide:
    • Si vous n'utilisez que des comptes locaux (et pas de comptes réseau), vous pouvez demander à systemd de ne pas attendre que le réseau soit disponible pour afficher la fenêtre de connnexion. Ça permet de gagner quelques secondes sur le démarrage: sudo systemctl disable NetworkManager-wait-online.service
    • Si au démarrage vous avez un long message "Scanning for Btrfs filesystems…" alors que vous n'utilisez pas Btrfs, vous pouvez le désactiver:
      sudo apt purge btrfs-tools
      sudo update-initramfs -ukall
  • Isoler un logiciel : Pour lancer une application en laquelle je n'ai pas confiance, en ne lui laissant pas accès à mon répertoire perso:
    • J'installe d'abord firejail: sudo apt install firejail (ou voir site officiel).
    • Si je veux lancer un programme en lui interdisant d'aller sur internet, je fais:
      firejail --net=none monprogramme
    • Si je veux lancer un programme en lui interdisant l'accès à mon répertoire perso: Je créé un répertoire pour cette application dans lequel je met le script shell lanceur (qui utilise firejail):
      #!/bin/bash
      SCRIPT=$(readlink -f "$0")
      DIR=$(dirname "$SCRIPT")
      cd "$DIR"
      notify-send -i info -t 5000 "Skype" "Lancement par firejail..."
      firejail --noprofile --private=. bash -c "/usr/bin/skype"
    • Le programme enregistrera ses fichiers de config dans ce répertoire, sans pouvoir accéder à mon vrai répertoire perso.
  • Calculer la MD5 de fichiers avec sous-répertoires
    • Calculer:
      find . -type f -print0 | xargs -0 md5sum | grep -v "./md5sums" | sort -k2 > md5sums
      • Cela va créer un fichier md5sums qui permettra de vérifier l'intégrité des fichiers.
      • grep -v "./md5sums" permet d'éviter que le fichier md5sums essaie de se contrôller lui-même (puisqu'on est en train de le calculer)
      • Le sort -k2 permet de trier par les noms de fichier.
      • Si vous ne voulez pas aller dans les sous-répertoires, faites juste md5sum * | sort -k2 > md5sums
    • Vérifier:
      md5sum -c md5sums
      • Si un fichier manque ou a été endommagé, cette commande vous le signalera.
    • Si votre disque est très rapide (SSD), vous pouvez même utiliser xargs pour lancer des calculs de md5 en parallèle sur plusieurs fichiers pour aller plus vite:
      find . -type f -print0 | xargs -0 -L1 -P4 md5sum | sort -k2 | grep -v "./md5sums" | sort -k2 > md5sums
      • Le -P4 permet de lancer 4 calculs de md5 en parallèle.
      • Et pour calcul cette même md5 seulement dans le répertoire courant sans aller dans les sous-répertoire, ajoutez -maxdepth 1 juste avant -type f.
  • Emporter une application sur clé USB (pour ma clé "Live" de Linux Mint que j'utilise comme clé de dépannage):
    • Booter sur la clé et se connecter au net (afin d'être dans la même configuration de paquets installés/non-installés).
    • sudo apt download filezilla par exemple: Cela va créer un fichier .tar .gz contenant tous les .deb nécessaires, ainsi que le fichier install.sh.
    • Pratique pour embarquer des logiciels comme partclone sur clé USB afin de faire des images de mes partitions.
    • A noter qu'une fois booté sur la clé, le contenu de la clé USB est accessible en lecture seule dans /cdrom (copier sur le bureau pour pouvoir utiliser).
  • Supprimer les paquets inutiles: sudo apt autoremove
    • Cela va dé-installer les paquets qui ne sont plus utilisés par d'autres paquets mais qui auraient pu être laissés.
  • Cache des paquets (debian et dérivés (Ubuntu, LinuxMint…)):
    • Tous les paquets installés sont en copie dans /var/cache/apt/archives/.
    • La copie locale de ces paquets peut être parfois utile en cas de paquet foireux (rare) ou pour réinstaller un paquet sans connexion internet. Vous pouvez le vider pour gagner de la place, c'est sans risque pour le système.
    • Retirer les anciens paquets (retire les anciennes versions des paquets, mais laisse celles actuellement installées): sudo apt autoclean.
    • Vider complètement le cache des paquets: sudo apt clean
    • Forcer le re-téléchargement de tous les paquets:
      dpkg -l | grep "^ii" | awk ' {print $2} ' | xargs sudo apt-get -y --force-yes install --reinstall --download-only
      • Note: Cela ne va bien sur pas re-télécharger les .deb que vous avez manuellement téléchargés, mais seulement ceux présents dans les dépôts.
  • Installer de nouvelles polices de caractères:
    • Copier dans ~/.fonts
    • Faire: fc-cache -fv
  • Plus de son ? Relancer pulseaudio: pulseaudio -k
  • Plus de réseau ? Redémarrer le service réseau: sudo service network-manager restart ou plus simplement (sans sudo): nmcli networking off && sleep 5 && nmcli networking on
  • Ajouter des actions dans le menu contextuel du gestionnaire de fichiers Caja (ça marche avec la plupart des gestionnaires de fichiers):
    • Déposer votre script dans ~/.config/caja/scripts/ et le rendre exécutable.
    • Faites un clic-droit sur n'importe quel fichier ou dossier > Scripts > Nom de votre script
    • Exemple:
      Compresser RAPIDEMENT en tar-gzip
      #!/bin/bash
      # Créer rapidement une archive .tar.gz
      IFS=$'\n'
       
      for FILENAME in $CAJA_SCRIPT_SELECTED_FILE_PATHS; do
       if [ -d "$FILENAME" ]; then
        tar -c "$FILENAME" | pigz -c > "$FILENAME.tar.gz"
       fi
       if [ -f "$FILENAME" ]; then
        cat "$FILENAME" | pigz -c > "$FILENAME.gz"
       fi
      done

Version un peu plus évoluée du script

Version un peu plus évoluée du script

En affichant la progression dans un terminal (sudo apt install pv xterm) et une notification de fin de compression.

Créer rapidement une archive tar-gzip
#!/bin/bash
# Créer rapidement une archive .tar.gz
IFS=$'\n'
 
for FILENAME in $CAJA_SCRIPT_SELECTED_FILE_PATHS; do
    if [ -d "$FILENAME" ]; then
        cmd="tar -c \"`basename \"$FILENAME\"`\" | pv | nice pigz -c > \"$FILENAME.tar.gz\""
        xterm -T "Compression de `basename $FILENAME`" -e /bin/bash -l -c "$cmd"
        notify-send -i info -t 20000 "Compression terminée." "`basename $FILENAME`.tar.gz"
    fi
    if [ -f "$FILENAME" ]; then
        cmd="pv \"$FILENAME\" | nice pigz -c > \"$FILENAME.gz\""
        xterm -T "Compression de `basename $FILENAME`" -e /bin/bash -l -c "$cmd"
        notify-send -i info -t 20000 "Compression terminée." "`basename $FILENAME`.gz"
    fi
done


  • Faire un backup de tout (/) en conservant les droits (vers mon disque dur externe en ext4 également):
    sudo rsync -av --owner --progress --delete --exclude-from='excludes-backup.txt' / /destination
    • Fichiers/répertoires exclus du backup:
      excludes-backup.txt
      /proc
      /sys
      /dev
      /media
      /mnt
      /cdrom
      /tmp
      /run
      /var/tmp
      /var/run
      /home/sebsauvage/.steam/steam/steamapps
      /home/sebsauvage/.local/share/Trash
      *.!qB
  • Vérifier le système de fichiers: sudo touch /forcefsck et redémarrez.
  • Vérifier (fsck) une partition VeraCrypt:
    • Monter normalement votre partition (avec le mot de passe), puis:
    • sudo umount /media/veracrypt1
      sudo fsck /dev/mapper/veracrypt1
  • Passer en clavier en QWERTY juste le temps d'un jeu (remplacez monprogramme par le nom de votre jeu ; Ce script repasse en clavier français à la fin du jeu):
    #!/bin/bash
    monprogramme &
    echo $! >/tmp/monprogramme.pid &
    /usr/bin/setxkbmap -layout us &
    pid=`cat /tmp/monprogramme.pid` &
    if wait $pid
    then
        /usr/bin/setxkbmap -layout fr
    else
        /usr/bin/setxkbmap -layout fr
    fi
  • Quelques astuces pour les jeux, voir dans cette page.
  • Traiter les images en lot ou en automatique:
    • XNViewMP a une jolie interface graphique et possède des fonctions de manipulation et conversion en masse. (à télécharger du site et installer manuellement)
    • En ligne de commande GraphickMagick est le roi (il est plus moderne et efficace qu'ImageMagick). (sudo apt install graphicsmagick ; site officiel)
  • Réinitialiser le mot de passe: Si vous avez perdu votre mot de passe utilisateur ou root et que vous voulez le réinitialiser:
    • En bootant sur la machine elle-même:
      • Accédez au menu Grub (ESC ou ⇧ Maj au démarrage).
      • Prenez le premier élément du menu, pressez E pour le modifier.
      • Entrez votre login/mot de passe Grub (si Grub est protégé par mot de passe)
      • Repérez la ligne contenant ro quiet splash et remplacez par ro quiet splash rw init=/bin/bash
      • Pressez F10 pour booter dessus.
      • Vous accédez au login root.
      • Changez votre mot de passe: passwd monlogin
    • En bootant sur un LiveCD ou clé USB:
      • Démarrez sur le LiveCD/clé USB.
      • Tapez sudo fdisk -l (ou lancez gparted) pour repérer votre partition système (Pour l'exemple, ce sera /dev/sda1).
        sudo mkdir /media/sda1
        sudo mount /dev/sda1 /media/sda1
        sudo chroot /media/sda1
        passwd monlogin
        exit
    • Corollaire: Pour plus de sécurité, protégez toujours Grub et votre BIOS par mot de passe et configurez-le pour interdire de booter ailleurs que sur le disque dur interne.
  • Réinitialiser le mot de passe Windows:
    • Cette astuce fonctionne de Windows XP jusqu'à Windows 10.
    • :!: ATTENTION: Manipulation à ne PAS effectuer si vous utilisez le chiffrement de fichiers Windows, sinon vous risquez de perdre vos fichiers !
    • Eteignez proprement Windows (pas de mode veille ou hibernation).
    • Démarrez sur une clé USB Linux (par exemple Linux Mint).
    • Montez la partition Windows, puis
      cd "/media/mint/Windows 10/Windows/System32/"
      cp Utilman.exe Utilman.exe.original
      cp cmd.exe Utilman.exe

      (selon les versions de Windows, c'est sethc.exe qu'il faut manipuler, pas Utilman.exe).

    • Redémarrez sous Windows, attendez la fenêtre de login.
    • Selon les versions de Windows:
      • Cliquez sur le petit logo
      • ou pressez 5 fois la touche ⇧ Maj gauche.
      • ou pressez Win+U
    • Oh pouf ! Regardez le joli terminal qui s'affiche. Maintenant vous pouvez taper:
      • net user pour voir la liste des utilisateurs de la machine.
      • net user toto /ADD pour ajouter l'utilisateur toto.
      • net user toto * pour changer le mot de passe de toto (ou de n'importe quel autre utilisateur)
      • net localgroup pour lister les groups locaux.
      • net localgroup Administrators /ADD toto pour donner à l'utilisateur toto les droits admin.
  • NumLock activé sur l'écran de login:
    • sudo apt install numlockx
    • Centre de contrôle > Fenêtre de connexion > Options, cocher Activer NumLock.
  • Taille occupée par les dossiers:
    • En comptant les sous-dossiers mais sans les afficher:
      du --max-depth=1 -h
    • Et utilisez l'excellent ncdu !
  • Remplir l'espace vide par des zéros pour empêcher la récupération des fichiers (ou alléger une machine virtuelle):
    • Installer:
      sudo apt install secure-delete
    • Nettoyer:
      sfill -fllvz /lerépertoire
    • Pour le swap:
      sudo swapoff -a
      sudo sswap -fllvz /dev/sda5
    • Note: Le système se réservant par sécurité une partie du disque, il n'y a pas de garantie que la totalité soit effacée.
    • Autre option de nettoyage: le paquet zerofree. Notez que zerofree ne fonctionne que sur ext2/ext3/ext4 et qu'il ne travaille que sur des partitions démontées (sfill fonctionne sur une partition en cours d'utilisation).
  • Savoir quelle est votre distribution Linux:
    cat /etc/*-release
    • Exemple pour Linux Mint 19:
      DISTRIB_ID=LinuxMint
      DISTRIB_RELEASE=19
      DISTRIB_CODENAME=tara
      DISTRIB_DESCRIPTION="Linux Mint 19 Tara"
      NAME="Linux Mint"
      VERSION="19 (Tara)"
      ID=linuxmint
      ID_LIKE=ubuntu
      PRETTY_NAME="Linux Mint 19"
      VERSION_ID="19"
      HOME_URL="https://www.linuxmint.com/"
      SUPPORT_URL="https://forums.ubuntu.com/"
      BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
      PRIVACY_POLICY_URL="https://www.linuxmint.com/"
      VERSION_CODENAME=tara
      UBUNTU_CODENAME=bionic

      (On voit que c'est Linux Mint 19 basé sur Ubuntu Bionic Beaver, donc 18.04)

  • Informations système:
    • inxi est fantastique.
    • inxi -F vous donnera une vue d'ensemble de votre système.
    • -G pour la carte graphique, -A pour l'audio, etc. Faites un man inxi pour voir toutes les options.
    • Certaines informations (comme les numéros de série) ne remonteront qu'en lançant inxi en sudo. Exemple: numéro de série de votre ordinateur: sudo inxi -M ou encore les barettes de RAM avec leur numéro de série: sudo inxi -m -xx.
  • Pour lister tout le matériel présent dans la machine (avec numéros de série): sudo lshw
    • Et spécifiquement pour la partie réseau: sudo lshw -C network
  • Monter un répertoire distant par ssh
    • Installation:
      sudo apt install sshfs
    • Montage:
      mkdir pointdemontage
      sshfs utilisateur@machine.com: pointdemontage
      • Si vous voulez monter un répertoire distant précis:
        sshfs utilisateur@machine.com:/repertoire/distant pointdemontage
      • Si votre serveur ssh n'est pas sur un port standard:
        sshfs utilisateur@machine.com: pointdemontage -p 33000
    • Démontage:
      fusermount -u pointdemontage
  • Mise à jour de fortune (citations): fortune est un programme qui affiche des citations. Mais il n'a que de vieilles citations (2004), et la majorité en anglais. Voici comment les mettre à jour:
    • Supprimez les citations existantes: sudo rm -rf /usr/share/games/fortunes/*
    • Récupérez le fichier citation-celebre.7z (2 Mo, md5 b0e056e0f78434c35659b9889061286f), décompressez-le. (Il contient plus de 80000 citations, de Confucius à Les Nulls.)
    • Copiez ces 2 fichiers: sudo cp citation-celebre.com* /usr/share/games/fortunes
    • Testez: fortune
    • Pour afficher une citation quand vous ouvrez un nouveau shell, vous pouvez mettre fortune directement dans votre ~/.bashrc (ou si vous préférez:fortune | cowsay)
    • Plus d'informations dans cette page.
  • Du mal à lire une clé USB, un disque externe ou une carte mémoire ? Elle est peut-être en exFAT (système de fichiers de Microsoft différent de FAT32, sans la limite des 4 Go par fichier).
    • Faites: sudo apt-get install exfat-fuse exfat-utils
  • Faire du ménage dans vos fichiers:
    • En recherchant les fichiers en double.
      • Installez fslint: sudo apt install fslint Cette application n'existe plus, mais quelqu'un la ré-implémentée sous le nom de Czkawka.
      • Lancez l'application: Par défaut, c'est l'onget "Duplicate files" qui est sélectionné, avec votre répertoire perso.
      • Cliquez sur le bouton Rechercher en bas à gauche: Cela va rechercher les fichiers en double dans votre répertoire perso.
      • Il va vous afficher ceux qui prennent le plus de place en premier.
      • Vous pouvez sélectionner manuellement les fichiers, ou utiliser le bouton Sélectionné > Dans les groupes > Tout saut le plus récent pour sélectionner directement les fichiers redondants. Vous pouvez ensuite les supprimer.
      • Utilisez aussi l'onglet "Fichiers temporaires".
    • En recherchant les fichiers volumineux:
      • Installez gdmap: sudo apt install gdmap et lancez-le.
      • Il permet de repérer visuellement les fichiers les plus volumineux: À l'écran, chaque rectangle représente un fichier. Plus le rectangle est grand, plus le fichier est gros. (screenshots)
      • Dans le même genre: qdirstat.
      • Vous pouvez aussi utiliser (en terminal) l'excellent ncdu.
    • En recherchant les répertoires volumineux:
      • Avec mate-disk-usage-analyzer (fourni avec Linux Mint sous le nom de "Analyseur d'utilisation des disques").
      • Cliquez sur le bouton Analyser le dossier personnel
      • Les répertoires les plus volumineux sont affichés en premier. Vous pouvez les développer.
    • Jetez un coup d'oeil dans les répertoires suivants: Il y a peut-être des restes de fichiers de configuration de logiciels que vous avez dé-installés:
      • ~/.local/share/
      • ~/.config/
    • Je ne suis pas fan du logiciel BleachBit. Faites très attention à ce que vous faites dans ce logiciel.
  • Voir les entrées/sorties (accès disque):
    • Affichage en temps réel des processus consommant de l'I/O disque: sudo iotop
    • Liste des processus qui font des des I/O: sudo iotop -b -o | grep \%
    • Sans le grep, notez la différence entre 'Total disk write' et 'Actual disk write': Total correspond aux demandes d'écriture effectuées par les applications (qui atterrissent alors dans le cache), et le 'Actual' qui correspond aux écritures réelles sur disque (cache vers disque).
    • En cas de gros blocage, pour voir les processus en sont en attente des I/O:
      sudo watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"
    • Si vous faites:
      watch "egrep '(Dirty|^Cached:)' /proc/meminfo"

      vous pouvez voir en temps reél:

      • Cached : La quantité de mémoire vive utilisée pour le cache disque (pris dans l'espace mémoire libre, celui non utilisé par les applications).
      • Dirty : La quantité de données en cache en attente d'être écrite sur disque (Cela peut être utile quand vous copiez des fichiers sur clé USB pour voir où il en est).
  • Installer le logiciel Captvty sous Linux ? C'est possible !
  • Convertir un dossier de *.flac (et ses sous-répertoires) en mp3:
    find -name "*.flac" -exec ffmpeg -i {} -acodec libmp3lame -ab 128k {}.mp3 \;
    • Il y a plein d'autres astuces pour ffmpeg dans cette page.
  • Changer la luminosité au clavier:
    • Installez XBackLight: sudo apt install xbacklight
    • Ajoutez les raccourcis clavier:
      • Ctrl ⇧ Maj + : lancer la commande: xbacklight -inc 10
      • Ctrl ⇧ Maj - : lancer la commande: xbacklight -dec 10
  • Avoir de superbes fonds d'écran ? Prendre le logiciel Variety qui peut aller chercher des images chez Unsplash.: sudo apt install variety ou installer à la main les paquets "variety-slideshow" et "variety" (Site officiel, Paquets sur Launchpad).
  • BackInTime est une bonne solution pour faire des backups automatisés des fichiers utilisateurs. Il possède une interface graphique qui permet aux utilisateur de récupérer facilement les anciennes versions des fichiers. (sudo apt install backintime-gnome).
  • Swap sous forme de fichier:
    • À la place d'utiliser une partition de swap, on peut utiliser un fichier de swap. L'avantage est qu'on peut changer sa taille facilement sans avoir à retailler les partitions.
    • Désactiver le swap actuel: sudo swapoff -a
    • Créer un fichier de swap de 2 Go: sudo dd if=/dev/zero of=/swapfile bs=1024 count=2000000
    • Mettre les droits: sudo chmod 0600 /swapfile
    • S'assurer qu'il n'est pas fragmenté: sudo e4defrag -v /swapfile
    • Préparer le swap: sudo mkswap /swapfile
    • Activer le swap: sudo swapon /swapfile
    • Mettre dans /etc/fstab:
      /swapfile none swap sw 0 0
    • Note:
      • Si vous voulez supprimer votre partition de swap:
        • Pensez à commenter la ligne dans votre /etc/fstab.
        • Vous pouvez booter sur clé USB pour supprimer la partition avec gparted.
        • Pensez à retirer la partition du système d'hibernation pour éviter des attentes inutiles au boot:
          • Si vous voyez Gave up waiting for suspend/resume device dans /var/log/boot.log alors modifiez le fichier /etc/initramfs-tools/conf.d/resume (créez ce fichier s'il n'existe pas):
            • Là où il y a RESUME=UUID=388a79ac-27b7-42f5-ac13-… remplacez par RESUME=none
            • puis faites: sudo update-initramfs -u
  • Désactiver l'hibernation (c'est à dire suspend-to-disk et suspend-to-ram):
    • Désactiver:
      sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
      sudo systemctl restart systemd-logind.service
    • Réactiver:
      sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
    • Et pour empêcher l'hibernation quand l'écran est rabattu, dans le fichier /etc/systemd/logind.conf, décommenter les deux lignes suivantes:
      HandleLidSwitch=lock
      HandleLidSwitchDocked=lock
  • Allonger l'autonomie
    • sudo apt install tlp
    • tlp va changer des réglages système quand vous passez de secteur à batterie (et inversement). Les réglages par défaut sont excellents.
    • man tlp ou voir le fichier /etc/default/tlp pour changer les réglages.
    • Si vous utilisez tlp, powertop n'est plus utile.
  • Besoin de capturer une vidéo de l'écran ?
    • Kazam marche très bien, même pour capturer un jeu vidéo en plein écran. sudo apt install kazam
    • Capture de tout ou partie de l'écran au format MP4(h264)/WebM(VP8)/AVI, avec ou sans le son (source: sortie audio et/ou micro).
  • Gestion des sessions utilisateur:
    • Voir qui est logué: w
    • Désactiver temporairement un utilisateur: sudo vipw et mettre un # devant son login.
    • Déloguer de force un utilisateur: sudo pkill -u utilisateur mate-session (mate-session ou le processus visible quand vous faites w).
  • Monter un fichier *.img (comme, par exemple, un fichier img de RecalBox)
    • Dans l'explorateur de fichier de certaines distributions, pour pouvez faire un clic-droit sur un fichier .img pour le monter, mais il sera monté en lecture seule. Pour le monter en lecture/écriture:
    • Un fichier img peut contenir plusieurs partitions. Pour connaître les partitions faites: fdisk -l fichier.img. Par exemple pour RecalBox:
      >fdisk -l recalbox.img
      Disque recalbox.img : 2,4 GiB, 2579489280 octets, 5038065 secteurs
      Unités : secteur de 1 × 512 = 512 octets
      Taille de secteur (logique / physique) : 512 octets / 512 octets
      taille d'E/S (minimale / optimale) : 512 octets / 512 octets
      Type d'étiquette de disque : dos
      Identifiant de disque : 0x00000000
      
      Périphérique  Amorçage  Début     Fin Secteurs Taille Id Type
      recalbox.img1            1263  132334   131072    64M  c W95 FAT32 (LBA)
      recalbox.img2          132335 5038064  4905730   2,3G 83 Linux
    • On voit qu'il y a 2 partition. La partition Linux commence à 132335. Le blocksize est de 512. La partition commence donc à 132335*512=67755520. On peut la monter en indiquant l'offset:
      mkdir temp
      sudo mount -o loop,offset=67755520 recalbox.img temp/
  • Si vous avez un disque *.img (par exemple une image destinée à cette saloperie d'Etcher) et que vous voulez l'utiliser directement dans VirtualBox, vous pouvez (après l'avoir décompressée avec unxz --keep image.img.xz) le convertir en *.vdi:
    VBoxManage convertdd image.img image.vdi
  • Monter un disque .vdi dans votre système : Il est possible de monter dans votre système un disque VirtualBox (*.vdi):
    • Installer les outils: sudo apt install qemu-kvm qemu-utils
    • Activer le module: sudo modprobe nbd
    • Monter le device: sudo qemu-nbd -c /dev/nbd0 disk.vdi
    • Vous pouvez voir les partitions du disque (/dev/nbd0p1, /dev/nbd0p2…):
      >sudo fdisk -l /dev/nbd0
      [...]
      Périphérique Amorçage  Début     Fin Secteurs Taille Id Type
      /dev/nbd0p1             1263  132334   131072    64M  c W95 FAT32 (LBA)
      /dev/nbd0p2           132335 4326782  4194448     2G 83 Linux
    • Vous pouvez monter une partition:
      mkdir part
      sudo mount /dev/nbd0p2 part/
    • Quand vous avez terminé:
      sudo umount /dev/nbd0p2
      qemu-nbd -d /dev/nbd0
  • Faire des images de partitions ou de disque (pour garder une copie d'une partition ou d'un disque complet: disque dur, clé USB, carte MicroSD…)
    • Si votre disque est /dev/sda, les partitions seront /dev/sda1, /dev/sda2, etc. Pour voir les partitions: sudo fdisk -l ou inxi -Po
    • Avec dd: Vous pouvez sauvegarder partitions ou disques complets.
      • dd copie "bêtement" tous les octets (y compris les secteurs où il n'y a pas de fichiers). pigz compresse comme gzip mais plus rapidement. pv permet de voir la progression.
      • Sauvegarder une partition ou un disque (en compressant):
        sudo dd if=/dev/sda2 | pv | pigz > image.dd.gz
      • (mettre /dev/sda pour sauvegarder TOUTES les partitions, y compris le MBR).
      • Restaurer:
        zcat image.dd.gz | pv | sudo dd of=/dev/sda2
    • Avec partclone: Vous pouvez sauvegarder des partitions.
      • partclone est un peu plus intelligent que dd: Il "comprend" le système de fichier et n'ira pas sauvegarder les secteurs vides. Il sera donc a priori plus rapide que dd, et générera des images plus compactes.
      • sudo apt install partclone pour installer.
      • Vous devez utiliser le partclone correspondant au système de fichier de la partition que vous voulez sauvegarder (ext4 –> partclone.ext4).
        • Voir man partclone ou apropos partclone.
        • Pour FAT (fat12/fat16/fat32), ne vous embêtez pas: Prenez partclone.vfat. Par contre pour exfat, il faut prendre partclone.exfat.
      • Sauvegarder une partition ext4 (en compressant):
        sudo partclone.ext4 -c -d -s /dev/sda2 | pigz > image.partclone.gz
      • Restaurer:
        zcat image.partclone.gz | sudo partclone.restore -d -o /dev/sda2
      • Voir les informations d'une image partclone:
        zcat image.partclone.gz | sudo partclone.info -s -
      • Vérifier une image partclone:
        zcat image.partclone.gz | sudo partclone.chkimg -s -
      • Conseil: Nommez le fichier pour vous y retrouver. Moi j'utilise NomDevice.Utilisation.partclone.TypeDeSystèmeDeFichier.gz. Exemple: sda2.HOME.partclone.ext4.gz. Je sais ainsi que c'est l'image partclone de ma partition sda2 en ext4, utilisée pour /home.
    • N'utilisez plus partimage. Il n'est pas compatible ext4.
    • Si vous avez sauvegardé les partitions individuellement, vous voudrez peut-être aussi sauvegarder le MBR (qui contient le logiciel amorce et la table de partitions):
      • Sauvegarder:
        sudo dd if=/dev/sda of=mbr.bin bs=512 count=1
      • Restaurer:
        sudo dd if=mbr.bin of=/dev/sda
    • Astuce: Pour sauvegarder sur un disque FAT32 (dont la taille limite de fichier est 4 Go), on peut découper par fichiers de 4 Go:
      • Sauvegarde:
        partclone.ext4 -c -d -s /dev/sda2 | pigz | split -d -b 4000M - image.partclone.gz.

        Cela va créer des fichiers image.partclone.gz.00, image.partclone.gz.01, etc.

      • Pour restaurer:
        cat image.partclone.gz.* | pigz -d | sudo partclone.restore -d -o /dev/sda2
    • Avec fsarchiver
      • dd et partclone ne peuvent travailler que sur des partitions démontées. fsarchiver peut travailler sur des fs montés, et (tout comme partimage) il garde tous les fichiers avec leurs attributs. Voici les différences:
        • Tout comme partimage, il garde tous les attributs des fichiers, mais il travaille au niveau fichiers, ce qui lui permet de restaurer les fichiers vers une partition d'un type différent (alors que, par exemple, partimage ne peut restaurer une sauvegarde ext4 que dans un partition ext4).
        • Il est beaucoup plus rapide.
        • La compression est intégrée (compression zstd très rapide)
        • Les archives ainsi créées peuvent être transférées vers des disque plus gros ou plus petits.
        • Si une archive fsarchiver est corrompue, vous ne perdez que les fichiers endommagés de l'archive, pas toute l'archive.
        • De par sa vitesse, fsarchiver est un excellent choix pour faire un backup préventif sur un disque externe avant une réinstallation du système, par exemple.
        • Exemple:
          • Sauvegarder un répertoire:
            sudo fsarchiver savedir -v --zstd=3 archive.fsa /monRépertoireÀSauvegarder/
          • Restaurer :
            sudo fsarchiver restdir -v archive.fsa destination/
          • Vous pouvez changer la valeur de --zstd pour varier la compression (1=la plus rapide, jusqu'à 22, mais consomme beaucoup de mémoire et de CPU. 7 est déjà pas mal.)
          • Ajoutez --jobs=4 pour utiliser 4 coeurs de votre CPU (par défaut fsarchiver n'utilise qu'un seul coeur). Cela va accelérer l'archivage (et le désarchivage).
  • Besoin de voir si votre joystick ou manette fonctionne bien ? Utilisez jstest-gtk (sudo apt install jstest-gtk)
    • PS: Même si jstest fonctionne, il se base sur /dev/input/jsX qui sont en principe obsolètes. Vous pouvez passer à evtest qui se base sur /dev/input/eventXX. La version graphique, evtest-qt n'est sans doute pas dispo pour votre distribution. Vous devrez la compiler ou prendre les packages sur Launchpad.
  • Besoin d'exécuter un script shell qui se trouve sur un disque FAT/NTFS, mais impossible de faire un chmod +x justement parce que vous êtes sur FAT/NTFS ? Lancez-le simplement en faisant: bash ./script.sh
  • Faire un backup de votre smartphone Android par ssh+rsync:
    • À partir du moment où votre smartphone et votre ordinateur sont sur le même réseau local, rsync est très efficace pour synchroniser des répertoires. Heureusement pour nous, il existe sous Android des serveurs ssh incluant un serveur rsync, comme SSHelper.
    • Voici un exemple de script de sauvegarde (avec dans l'exemple: Login automatique par mot de passe, utilisation d'un port ssh non standard et liste de types de fichiers et répertoires à exclure):
      backup-smartphone.sh
      #!/bin/bash
      # Backup de la mémoire interne du téléphone:
      sshpass -p 'motdepasse' rsync -av --no-p -zz --progress --delete login@192.168.0.3:/sdcard/ -e "ssh -p 2222" ~/backup-smartphone/internal/
      # Backup de la carte MicroSD
      sshpass -p 'motdepasse' rsync -av --no-p -zz --progress --delete login@192.168.0.3:/storage/0000-0000/ -e "ssh -p 2222" --exclude={'.android_secure','*.obf','*.mwm',Music,Android/data/com.earthflare.android.radioparadisewidget.gpv2/cache/} ~/backup-smartphone/sdcard/
  • Je n'ai pas encore pris le temps de mettre le nez dedans, mais zsh a vraiment l'air d'être une tuerie ! (pour remplacer bash).
    • Autre alternative à explorer: Fish
  • flock permet de vous assurer qu'un programme n'est pas lancé plusieurs fois en même temps, ou que deux tâches ne sont pas lancées simultanément.
    • Exemple: Si vous lancez séparément ces deux commandes (par exemple dans des terminaux différents), flock s'assurera qu'elles ne sont pas exécutées simultanément:
      flock /tmp/abcd555 -c "sleep 30"
      flock /tmp/abcd555 -c "echo coucou"
  • Lancer une application graphique en tant qu'un autre utilisateur ?
    > xhost +
    > su autrecompte
    > gimp
    • Penser à faire xhost - pour refermer les droits de connexion au serveur X.
  • Connaître la qualité d'un JPEG.
    • Malheureusement, la qualité d'un JPEG n'est pas une donnée obligatoire dans un JPEG. L'information n'est donc généralement pas fournie dans les informations image (EXIF). Cependant, si vous avez ImageMagick installé, vous pouvez lui demander d'estimer la qualité à partir des données de l'image elle-même:
      identify -verbose votreimage.jpg | grep Quality
  • Convertir un PDF en images:
    • pdftocairo -png fichier.pdf
    • Pour sortir dans un autre format: -jpeg, -tiff
    • Par défaut la résolution en sortie est 150dpi. Vous pouvez la changer avec -r, par exemple
      pdftocairo -r 600 -tiff fichier.pdf
  • Convertir des images en PDF:
    • img2pdf *.jp* --output fichier.pdf
  • Joindre plusieurs PDF en un seul:
    • pdfunite fichier1.pdf fichier2.pdf fichier3.pdf sortie.pdf
  • Extraire toutes les images d'un PDF:
    • (Cela ne convertit pas les pages en images comme avec pdftocairo, mais au contraire extrait les images utilisées dans le PDF).
    • pdfimages -all fichier.pdf images
    • Cela va créer des fichiers images-000, images-001, etc. contenant toutes les images du pdf.
  • Coloriser les logs.
    • ccze sait coloriser divers logs pour les rendre plus lisibles. Essayez : cat /var/log/syslog | ccze -A | less -R
    • ccze supporte syslog, vsftpd, php… tapez ccze -l pour voir les types de logs supportés.
  • Compter combien vous avez d'ebook dans votre liseuse:
    find .  | egrep "\.(cbz|cbr|pdf|epub)$" | wc -l
  • yt-dlp (successeur de youtube-dl, pour télécharger des vidéos de centaines de sites web):
    sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
    sudo chmod a+rx /usr/local/bin/yt-dlp
    • Liste les extracteurs (sites) supportés:
      yt-dlp --list-extractors
    • Télécharger une vidéo:
      yt-dlp https://youtube.com/watch?v=dQw4w9WgXcQ
    • Voir dans quels formats est disponible une vidéo:
      yt-dlp -F https://youtube.com/watch?v=dQw4w9WgXcQ
      • Regardez la colonne ID et téléchargez le format qui vous intéresse avec:
        yt-dlp -f ID https://youtube.com/watch?v=dQw4w9WgXcQ
    • Pour le mettre à jour, faire de temps en temps:
      sudo yt-dlp -U
  • Récupérer l'audio d'une vidéo YouTube en mp3:
    youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Télécharger de préférence une vidéo en mp4:
    yt-dlp -S ext:mp4:m4a https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Si au démarrage vous préférez voir les logs de démarrage plutôt que le logo animé, modifiez le fichier /etc/default/grub:
    • Changez la ligne
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    • en:
      GRUB_CMDLINE_LINUX_DEFAULT=""
    • puis faites: sudo update-grub
  • Votre Ubuntu n'en a rien à foutre du délai GRUB_TIMEOUT que vous avez mis dans /etc/default/grub ? Essayez GRUB_RECORDFAIL_TIMEOUT à la place (suivi d'un sudo update-grub).
  • Quel programme sur votre ordinateur est en train de vous bouffer la bande passante ?
    • sudo nethogs
  • Quel machine sur votre réseau est en train de bouffer la bande passante ? Utilisez iptraf:
    • Installation: sudo apt install iptraf-ng
    • Utilisation:
      • sudo iptraf-ng
      • Sélectionnez LAN Station Monitor : Vous verrez alors le traffic réseau (ce sont les adresses MAC qui sont affichées).
  • Couper automatiquement les applications de P2P si vous coupez votre VPN ou qu'il tombe:
    surveillance-vpn.sh
    #!/bin/bash
    echo "Surveillance du VPN."
    while true
    do
      CHECKDATA=`ifconfig`
      if [[ $CHECKDATA == *'tun0:'* ]] ; then
          echo "`date` : VPN ok. Attente 1 seconde."
      else
          echo "`date` : Le VPN est désactivé. Terminaison des logiciels de P2P."
          killall --signal SIGKILL --wait qbittorrent transmission-gtk amule
          echo "Pressez ENTREE"
          read
          exit 1
      fi
      sleep 1s
    done
  • Trouver les machines sur une plage d'IP:
    nmap -sP 192.168.0.1-255
    • ou plus rapide avec arp-scan (sudo apt install arp-scan):
      sudo arp-scan 192.168.0.0/24
    • ou lister rapidement les machines du LAN:
      arp -an
  • Capturer une image avec la webcam:
    ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 -ss 0:0:2 -frames 1 -y "/tmp/`date -Iseconds`.jpg"
  • Optimiser un GIF animé:
    • Le format mp4 est généralement une meilleure solution que le format GIF animé (voir cette page), mais si vous tenez absolument au format GIF, on peut les optimiser:
    • Vous pouvez réduire sa taille avec ImageMagick:
      convert -limit memory 1 -limit map 1 -fuzz 5% -layers Optimize input.gif output.gif
    • ou avec gifsicle (attention, nécessite gifscicle 1.92 ou supérieur ; les dépôts n'ont souvent que la 1.91):
      gifsicle -O3 --lossy=80 -o output.gif input.gif
    • Selon la nature des images, l'un ou l'autre sera plus efficace.
    • Notez que ces deux méthodes réduisent un peu la qualité d'image.
    • Avec gifsicle, vous pouvez monter la valeur du paramètre --lossy (par exemple --lossy=200 ou --lossy=800) : Cela compressera encore mieux, au détriment de la qualité d'image.
  • Tracer toutes les commandes lancées sur un système avec les options de la ligne de commande:
    • Installez: sudo apt install snoopy
    • Et pouf, vous n'avez plus qu'à regarder dans /var/log/auth.log. Exemple de sortie:
      Jul 16 10:33:22 mycomputer snoopy[11483]: [login:sebsauvage ssh:((undefined)) sid:12137 tty:/dev/pts/3 (1005/sebsauvage) uid:sebsauvage(1005)/sebsauvage(1005) cwd:/home/sebsauvage]: nmap -sP 192.168.0.1-255
    • Exemple de script de filtrage:
      #!/bin/bash
      reg_snoopy="(.+?) (.+?) (.+?) (.+?) snoopy.+?login:([a-z]+)\s.+?cwd.+?\]: (.*)"
      tail -fn0 /var/log/auth.log | \
      while read line ; do
         if [[ $line =~ $reg_snoopy ]] ; then
      	   echo "Date: ${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]}, utilisateur: ${BASH_REMATCH[5]}, commande: ${BASH_REMATCH[6]}"
         fi
      done
  • Qui est connecté ? :
    w
  • Date de dernière connexion de chaque utilisateur:
    lslogins -u
  • Liste des connexions et déconnexions utilisateur, et temps de connexion:
    last
  • Synchroniser un répertoire local vers un répertoire distant par FTP:
    • lftp ftp://login:password@votreserveurftp.com -e "mirror -e -c -R --ignore-time --verbose=1 /répertoirelocal /répertoiredistant/ ; quit"
    • -e supprimera les fichiers distants s'ils ont été supprimés en local.
    • -c essaiera de faire de son mieux pour reprendre en cas d'interruption.
    • -R sert à synchroniser local vers distant (sans -R, c'est distant vers local)
    • --ignore-time ne tranfèrera les fichiers que si la taille est différente. Vous pouvez retirer cette option pour transférer les fichiers dont la date a changé localement.
    • --verbose=1 affichera les opérations effectuées (fichiers supprimés, transférés…)
    • Si vous voulez limiter lftp pour les serveurs FTP qui n'aiment pas trop les multiples connexions simultanées, dans ~/.lftp/rc, mettez:
      set cmd:parallel 1
      set net:connection-limit 1
      set xfer:parallel 1
      set ftp:sync-mode true
    • rclone sait aussi synchroniser par ftp, mais aussi par sftp/ssh/smb/webdav/etc.
  • Accéder au contenu de votre téléphone par USB (MTP) : La plupart des téléphones actuels permettent l'accès aux fichiers par MTP. C'est horriblement lent, mais on a pas trop le choix. Si certains explorateurs de fichiers (Gnome) sont capable d'accéder aux fichiers (par exemple avec gvfs), ce n'est pas accessible du système de fichier. Pour monter réellement les répertoires dans votre système de fichiers:
    • D'abord installer le paquet qui va bien:
      sudo apt install jmtpfs
    • Ajoutez-vous dans le goupe "plugdev" et "fuse":
      sudo usermod -a -G plugdev monlogin
      sudo usermod -a -G fuse monlogin
    • Ensuite "éjecter" le périphérique de l'explorateur de fichiers, puis créer un répertoire, et enfin monter votre téléphone dans ce répertoire:
      sudo jmtpfs -o allow_other répertoire
    • Pour démonter:
      sudo umount répertoire
    • Alternativement, vous pouvez essayer mtpfs et mtp-tools.
  • Tapez export TMOUT=30 et votre terminal se fermera au bout de 30 secondes (sauf si un processus est en cours. Dans ce cas, il attendra la fin du processus).
  • Voir tous les mots de passe stockés dans le trousseau de clés Gnome (mots de passe de partages, Wifi, Vpn…): sudo apt install seahorse et lancez-le.
  • flatpak:
    • FIXME Section à compléter
    • Voir la liste des pack installés:
      flatpak list
    • Retirer les packs inutilisés:
      flatpak uninstall --unused
  • snap
    • FIXME Section à compléter
    • Retirer les snaps inutilisés:
      • créer le script suivant (source):
        remove-old-snaps
        #!/bin/bash
        # Removes old revisions of snaps
        # CLOSE ALL SNAPS BEFORE RUNNING THIS
        set -eu
         
        LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
            while read snapname revision; do
                snap remove "$snapname" --revision="$revision"
            done
      • rendre le script exécutable chmod +x remove-old-snaps
      • lancer: sudo ./remove-old-snaps
  • S'installer rapidement un serveur web avec apache:
    sudo apt install apache2 php7.2 libapache2-mod-php7.2
    • Le répertoire du serveur web est /var/www/html/.
  • Pour NextCloud, pour tester en local, pas pour une prod, ajoutez:
    sudo apt install php7.2-zip php7.2-xml php7.2-gd php7.2-curl php7.2-mbstring php7.2-sqlite3 php7.2-imagick php7.2-intl 
    sudo phpenmod intl
    sudo a2enmod rewrite
    sudo service apache2 restart
    • Dans /etc/apache2/apache2.conf, dans la section <Directory /var/www/>, remplacez AllowOverride None par AllowOverride All.
    • Dans le répertoire racine de votre serveur web, créez un fichier .htaccess contenant: php_value memory_limit 2048M
  • Votre répertoire de fichiers temporaires (/tmp) se vide tout seul à chaque redémarrage, mais pas le cache d'impression de cups: Tout ce que vous avez imprimé s'accumule dans /var/cache/cups. Pour le vider faites:
    sudo service cups stop
    sudo rm -r /var/cache/cups/
    sudo service cups start
  • Si vous avez des problèmes dépendance pour installer un paquet, il arrive souvent que aptitude trouve des solutions un peu plus poussées qui résoudront les problèmes.
    sudo apt install aptitude
    sudo apt install MonPaquet
  • Des soucis pour installer, configuer ou utiliser Wine ? Voir cette page.
  • Réparer des fichiers
    • par2 permet de réparer des fichiers. (Version courte de l'explication: Imaginez que vous ayez 10 Go de fichiers. Si vous préparez à l'avance 1 Go de fichiers par2, vous pourrez réparer/reconstituer (au plus) 1 Go de données endommagées ou perdues dans ces 10 Go, quel que soit l'endroit où les données sont endommagées dans ces 10 Go).
    • Créer des fichiers par2 sur un groupe de fichiers, avec 10% de redondance (Donc 10 Go de données créera 1 Go de fichiers par2):
      par2 c -r10 protection *
      • Cela va créer le fichier protection.par2, ainsi que des fichiers protection.volxxx+xx.par2.
        • Le fichier protection.par2 seul est utile pour vérifier l'intégrité de vos fichiers.
        • Les fichiers protection.volxxx+xx.par2 servent à réparer les données. Un fichier .par2 de 2,3 Mo permettra de réparer jusqu'à 2,3 Mo de données perdues/endommagées.
      • Ajoutez l'option -R si vous voulez aussi prendre en compte les sous-répertoires.
    • Vérifier des fichiers:
      par2 v protection.par2
      • Message affiché à la fin:
        • All files are correct, repair is not required. : Tout va bien, vos données sont saines.
        • Repair is required. / Repair is possible. : Vos fichiers sont endommagés, mais vous pouvez les réparer. Passez à l'étape suivante.
        • Repair is required. / Repair is not possible. : Vos fichiers sont endommagés, mais mauvaise nouvelle, ce n'est pas réparable (vous n'avez pas assez de blocs de réparation pour tout réparer.)
    • Réparer les fichiers:
      par2 r protection.par2
      • Et attendez (cela peut être assez long).
      • Si vous voyez Repair complete., c'est tout bon. Vos données sont réparées.
  • Dans LibreOffice, vous voulez le ruban comme dans Microsoft Office ?
    • Allez dans le menu Affichage > Interface utilisateur > Onglets
    • et voilà:
  • Savoir à quel paquet appartient un fichier
    • Par exemple vous lancez un programme qui se plaint qui lui manque un fichier:
      error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
    • Comment savoir dans quel paquet aller chercher ce fichier ? Commencez par installer apt-file:
      sudo apt install apt-file
    • sudo apt-file update
    • Ensuite cherchez votre fichier
      >apt-file search libcrypto.so.1.0.0
      google-earth-pro-stable: /opt/google/earth/pro/libcrypto.so.1.0.0
      libssl1.0.0: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
    • Voilà, vous savez qu'il ne vous reste plus qu'à installer le paquet manquant: sudo apt install libssl1.0.0
  • La clé USB live d'Ubuntu Mate 20.04 a la sale manie de vérifier tout le média avant de booter. Pour éviter ça, dans le fichier /boot/grub/grub.cfg, ajouter l'option fsck.mode=skip.
    • Et pour avoir le clavier français, ajouter locales=fr_FR.UTF-8 keyboard-layouts=fr
  • Besoin de désactiver le clavier interne ou le touchpad de votre ordinateur portable ?
    • Pour lister les périphériques:
      xinput list
    • Pour désactiver le clavier:
      xinput disable "AT Translated Set 2 keyboard"
    • Pour réactiver le clavier:
      xinput enable "AT Translated Set 2 keyboard"
  • Si quand vous lancez un jeu ou programme vous avez l'erreur System.Exception: Magic number is wrong: 542, lancez le programme comme suit:
    export 'TERM=roxterm' && ./LeProgramme.bin
  • Voir les taux de transfers USB en temps réel.
    • Installer:
      sudo apt install usbtop
    • Activer le module de capture:
      sudo modprobe usbmon
    • Afficher les débits:
      sudo usbtop
  • Comparer deux répertoires (y compris le contenu des fichiers):
    • avec diff :
      diff -qr /répertoire1 /répertoire2
      • -q pour n'afficher que les différences.
      • -r pour traiter les sous-répertoires.
    • avec rsync: On fait comme si on démarrait une synchro, mais en mode "test seul" (donc sans rien faire):
      rsync -rvnc --delete /répertoire1 /répertoire2
      • -r : traiter les sous-répertoires.
      • -v : verbose (affiche le détail)
      • -n : ne touche pas aux fichiers
      • -c : compare le contenu des fichiers (checksum) au lieu de juste date/heure/taille.
      • --delete : Rassurez-vous, il ne va rien effacer (car on a utilisé -n), mais cela permet d'afficher les fichiers présents dans la destination mais pas dans la source.
    • L'avantage de rsync sur diff est qu'on peut le suivre avec un sudo progress -M.
    • Ou avec une interface graphique avec meld (sudo apt install meld).
  • Besoin de travailler temporairement sur des fichiers que vous allez jeter après ? Ne les enregistrez pas dans votre répertoire perso, mais dans /dev/shm. Ce répertoire réside en mémoire, et ne sera jamais écrit sur disque. Le contenu sera automatiquement effacé au prochain redémarrage.
  • Malheureusement, des développeurs de Gnome on cru bon de ré-implémenter l'équivalent du service d'indexation des fichiers de Windows. Ça bouffe du CPU, de l'I/O disque et aussi de l'espace disque (~/.cache/tracker/). Voici comment le désactiver (à faire pour chaque utilisateur):
    systemctl --user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service
    tracker reset --hard
  • Le répertoire ~/.cache peut grossir. Beaucoup. On peut sans problème l'effacer (les applications vont re-créer ce dont elles ont besoin) mais si vous n'êtes pas à l'aise avec ça, on peut supprimer juste tous les fichiers qui ont plus d'un an. Cela devrait déjà vous faire gagner de la place:
    • Voir ce qui va être supprimé:
      find ~/.cache/ -depth -type f -mtime +365
    • Ou les supprimer directement:
      find ~/.cache/ -type f -mtime +365 -delete
    • Attention: Si vous utilisez borg, en effaçant sont cache vous risquez de rallonger la durée de votre prochain backup car borg n'aura plus en cache le status des fichiers (il va devoir reconstruire son cache).
  • La liste et date/heure d'installation de tous les paquets:
    zgrep -h " installed " /var/log/dpkg.log* | sort | uniq
  • Voir la charge de la batterie en ligne de commande (si vous avez tlp installé):
    sudo tlp-stat -b
    • alternativement, vous pouvez aussi faire:
      cat /sys/class/power_supply/BAT*/status
  • Si vous aviez proprement installé Timeshift pour faire des sauvegardes de votre système et que votre système de démarre plus, redémarrez l'ordinateur en laissant la touche MAJ enfoncée pour afficher le menu de Grub, choisissez le mode "recovery", puis dans le menu qui s'affiche la console "root" et tapez timeshift --restore: Il vous proposera l'un de vos backup timeshift précédents. Suivez les instructions. (↵ Entrée validera automatiquement tous les choix par défaut, sauf le dernier où il faudra répondre y pour confirmer la restauration.) Timeshift est même capable de restaurer grub. Pratique quand le système ne démarre plus parcequ'on a bidouillé le système ou suite à une mauvaise mise à jour.
  • Changer l'UUID d'une partition (utile si par exemple vous copiez des partitions d'un disque à l'autre avec dd. Chaque partition doit avoir un UUID différent.)
    • D'abord, générer un nouvel UUID: cat /proc/sys/kernel/random/uuid
    • Changer l'UUID du disque:
      sudo tune2fs /dev/sdb1 -U 5ace2c0b-fc93-4481-a983-d1ed9fa2e523

      ou

      sudo tune2fs /dev/sdb1 -U random
    • Vérifier: sudo blkid /dev/sdb1
    • Note: tune2fs est spécifique aux systèmes de fichiers ext2/ext3/ext4. Les autres types de partition ont besoin d'outils spécifiques.
  • Changer le label d'un disque (le nom sous lequel il apparaît dans le gestionnaire de fichiers): sudo tune2fs /dev/sdb1 -L NouveauLabel
  • Sous Ubuntu et vous voulez virer le système des snaps ?
    • Voir les snaps installés: snap list
    • Retirer un snap (par exemple celui de Blender): snap remove blender
    • Supprimez chacun des snaps un par un avec la commande précédente.
    • Notez que core18 doit être supprimé en avant-dernier, et snapd en dernier.
    • Une fois que snap list ne renvoie plus rien, faire:
      sudo apt purge snapd  # Retirer le service et ses fichiers de config
      sudo apt autoremove   # supprimer les paquets liés désormais inutiles
      rm -rf ~/snap         # supprimer le répertoire snap dans votre dossier perso.
  • Si dans l'éditeur de texte Geany vous avez (avec certaines polices et tailles de caractères) les underscores (_) qui disparaissent, allez dans le menu Tools > Configuration Files > filetypes.common et dans la section [styling] mettez line_height=1;1;. (source)
  • Vous avez un Raspberry Pi ? cette page pourra vous être utile (Raspbian, Ubuntu, DietPi)
  • Vous avez des soucis pour faire reconnaître votre imprimante sous Ubuntu/Linux Mint ? Il faut savoir que par défaut tous les pilotes ne sont pas installés. Jetez un coup d'oeil dans les paquets printer-driver-*. Par exemple, installez le paquet printer-driver-escpr pour les imprimantes Epson (qui n'est pas installé par défaut).
  • Besoin d'une version récente de jdupes ?
    • Télécharger la release la plus récente (Source code .tar.gz) sur https://github.com/jbruchon/jdupes/releases et décompresser
    • Dans le répertoire, lancer: make CFLAGS_EXTRA=-DENABLE_DEDUPE (ce flag active la compilation avec l'option déduplication, utile pour l'option -B avec btrfs).
    • Et utiliser l'exécutable produit (./jdupes).
    • Cela permet d'éliminer le bug "Not enough memory" quand il y a plus de 128 fichiers similaires.
  • Quand vous faites un raccourcis sur votre bureau pour lancer un script shell, le répertoire par défaut ne sera pas celui du script. Cela peut être gênant. Pour que le script se place d'abord dans son propre répertoire, mettez au début du script:
    cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
  • L'astuce du fichier vide: Quand un disque est plein, ce n'est pas bon. Vraiment pas bon. Quand on en arrive là, les logiciels se mettent à très mal se comporter, et il est peu tard pour faire de la place. Même compresser des fichiers temporairement est impossible, puisque vous n'avez plus d'espace disque. Oups. Certains admninistrateurs ont une astuce: Créer un fichier vide de 8 Go. Si par malheur un disque est plein, il suffit de supprimer ce fichier de 8 Go pour avoir assez d'espace pour réparer les choses et rétablir la situation. (source). Pour créer ce genre de fichier, faire:
    sudo fallocate -l 8G /spacer.bin
  • Savoir ce qui ralentit le démarrage de votre ordinateur avec systemd-analyze
    • Voir un graphe complet des unités chargées au démarrage, leur temps d'initialisation et leurs dépendances:
      systemd-analyze plot > boot.svg

      et ouvrez le fichier .svg

    • Voir le temps de démarrage de chaque unité:
      systemd-analyze blame
    • Mais certaines unités dépendent les unes des autres. Par exemple une base de données ne sera lancée que quand le réseau sera disponible, donc:
    • Avec critical-chain, vous pouvez voir la chaîne de démarrage la plus longue avec les dépendances.
    • Si vous êtes sur une machine de bureau, graphical.target correspond au démarrage de l'environnement graphique.
    • Prenons un exemple:
      >systemd-analyze critical-chain
      The time when unit became active or started is printed after the "@" character.
      The time the unit took to start is printed after the "+" character.
      
      graphical.target @3.727s
      └─multi-user.target @3.727s
        └─postgresql.service @3.724s +1ms
          └─postgresql@12-main.service @1.077s +2.646s
            └─network.target @1.058s
              └─NetworkManager.service @866ms +192ms
                └─dbus.service @862ms
                  └─basic.target @852ms
                    └─sockets.target @852ms
                      └─uuidd.socket @852ms
                        └─sysinit.target @837ms
                          └─systemd-timesyncd.service @772ms +65ms
                            └─systemd-tmpfiles-setup.service @744ms +24ms
                              └─local-fs.target @739ms
                                └─run-user-1002.mount @1.387s
                                  └─swap.target @654ms
                                    └─dev-zram7.swap @1.294s
                                      └─dev-zram7.device @1.293s +494ms
    • Ici:
      • L'interface graphique (graphical.target) a démarré en 3.727s (on voit le @3.727s).
      • Dans la chaîne de dépendance, si on prend par exemple la base de données Postegres (postgresql@12-main.service), on voit:
        • Qu'elle a mis 2.646s à démarrer (+2.646s) et elle a été lancée 1.077s après le démarrage du système (@1.077s)
  • Savoir si vous êtes sous Wayland ou X11:
    loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
  • Vous avez changé de distribution en gardant votre /home et votre bureau part un peu en couille ?
    • Si vous êtes sous Gnome ou dérivés (Mate, Cinnamon…), faites: dconf reset -f /org/gnome/ (cela va réinitialiser les réglages du bureau stockés dans ~/.config/dconf/user)
    • Retirez également éventuellement quelques applications lancées au démarrage de la session graphique qui pourraient entrer en conflit (Applications au démarrage).
    • Vous devrez sans doute aussi réinitialiser votre barre des tâches (Clic-droit > Réinitialiser tous les tableaux de bord).
    • Les fenêtres ont un drôle de look ? Pensez à choisir un thème (celui que vous utilisiez n'existe peut-être plus).
  • Le comportement par défaut de la plupart des distributions est de mettre l'ordinateur en "suspend" quand l'écran est rabattu. Du coup si vous démarrez ou redémarrez votre PC alors que l'écran est rabattu, il ne sera pas actif (pas de réseau, etc.). Pour changer ce comportement, modifiez le fichier /etc/systemd/logind.conf et ajoutez les lignes:
    HandleLidSwitch=lock
    HandleLidSwitchExternalPower=lock
  • /etc/xdg/autostart/ contient des raccourcis (*.desktop) qui seront lancés par défaut dans toutes les sessions graphiques utilisateur. C'est complété par ce qu'il y a dans ~/.config/autostart/
  • Allonger l'autonomie de votre PC en "gelant" les applications en arrière-plan: En plus de tlp (voir plus haut dans cette page), vous pouvez ajouter XSuspender. Ce logiciel permet de "geler" les applications qui ne sont pas en avant-plan (elles restent en mémoire mais ne consomment alors plus de CPU, donc plus de batterie):
    • Télécharger et installer : https://github.com/kernc/xsuspender/#installation (Il y a des .deb pour Debian/Ubuntu/Mint)
    • Configurez votre session graphique pour lancer XSuspender à chaque ouverture de session.
    • Créer le fichier de configuration : ~/.config/xsuspender.conf
    • Il y a un fichier d'exemple de configuration que vous pouvez récupérer:
      cp /usr/share/doc/xsuspender/examples/xsuspender.conf ~/.config/xsuspender.conf
    • Modifiez ce fichier ~/.config/xsuspender.conf pour geler les applications de votre choix.
    • Personnellement, j'active le "gel" même quand je suis sur secteur: only_on_battery = false
    • Exemples:
      • Exemple 1: Arrêter totalement Metro Exodus quand il est en arrière-plan:
        [MetroExodus]
        match_wm_name_contains=Metro: Exodus
        suspend_delay = 1
        resume_every = 0
        • suspend_delay=1 : L'application sera gelée 1 seconde après avoir perdu le focus.
        • resume_every=0 : Elle sera gelée indéfiniement (jusqu'à ce qu'elle revienne en avant-plan).
      • Exemple 2 : Vous pouvez faire des choses plus complexes, par exemple pour l'application de messagerie Pigdin:
        [Pidgin]
        match_wm_class_contains = Pidgin
        resume_every = 1
        resume_for = 1
        downclock_on_battery = 2
        • resume_every=1 et resume_for=1 : Quand Pigdin est en arrière-plan, il réveille l'application au bout d'une seconde, la laisse travailler une seconde, puis la regèle. Et ainsi de suite. Cela permet de continuer à recevoir les messages, mais en gelant l'application la moitié du temps.
        • Et en plus de cela, il ne va laisser Pidgin n'utiliser que 50% d'un CPU avec downclock_on_battery=2 (pas besoin de beaucoup de puissance CPU pour faire fonctionner cette application).
        • Cela permet donc de continuer à profiter des fonctionnalités de Pidgin même quand elle est en arrière-plan, tout en limitant au maximum sa consommation CPU (et donc la consommation batterie).
      • Exemple 3 : Pour éviter qu'Eclipse me bouffe 100% du CPU quand il build en arrière-plan, je ne lui laisse que de petites tranches de CPU:
        [Eclipse]
        match_wm_class_contains=Eclipse
        suspend_delay = 1
        resume_every=3
        resume_for=2
        suspend_subtree_pattern=.*
        • Toutes les 3 secondes (resume_every=3), je le laisse travailler pendant 2 secondes (resume_for=2).
        • Comme Eclipse lance lui-même d'autres processus, suspend_subtree_pattern=.* permet de geler aussi tous les processus fils issus d'Eclipse.
      • Vous pouvez détecter les applications soit par le titre de la fenêtre (match_wm_name_contains), soit par sa classe (match_wm_class_contains). Quand possible, utilisez la classe (car par exemple le titre de la fenêtre de Firefox change selon les sites visités, mais classe reste Firefox).
        • Pour trouver la classe d'une fenêtre, taper dans un terminal: xprop -notype WM_NAME WM_CLASS et cliquer sur la fenêtre de l'application. Utilisez une des valeurs de WM_CLASS.
        • Lister toutes les fenêtres: wmctrl -l
      • Vérifier les déclenchements: lancer XSuspend de la manière suivante dans un terminal:
        G_MESSAGES_DEBUG=xsuspender xsuspender
  • Problème quand vous connectez un moniteur ? La configuration des moniteurs précédemment branchés est stockée (sous Gnome) dans ~/.config/monitors.xml
  • Entendre ce qui est dit au micro sur les haut-parleurs ou écouteurs:
    • Si pas installé, faire sudo apt install pavucontrol
    • Activer : pactl load-module module-loopback latency_msec=1
    • Désactiver : pactl unload-module module-loopback
  • Limiter la température du processeur. Vous avez des problèmes de refroidissement ou plus simplement vous voulez allonger la durée de vie de votre ordinateur ? Il est possible de limiter la température du CPU. Le principe est de réduire la fréquence du CPU de manière à maintenir la température en dessous du seuil que vous lui aurez fixé.
    • Si vous avez un processeur Intel, le contrôle de température est accessible via /sys:
      • Afficher le seuil actuel : cat /sys/bus/pci/drivers/proc_thermal/0000:00:04.0/tcc_offset_degree_celsius
        • La valeur retournée est le nombre de degrés en dessous de la valeur critique à partir de laquelle il va commencer à réduire la fréquence (throttling).
        • Chez moi, elle affiche 2. La température max est généralement 100° sur les processeurs. Il se limitera donc à 100-2 = 98° C.
      • Changer la valeur : Si on veut le limiter à 70°, il faut donc faire: sudo bash -c "echo 30 >| /sys/bus/pci/drivers/proc_thermal/0000:00:04.0/tcc_offset_degree_celsius"
      • Voir la température actuelle : sensors mais les environnements de bureau ont bien souvent des applets pour afficher la température.
    • Si vous avez un processeur AMD (ou tout autre CPU), vous pouvez utiliser ce script qui va effectuer grosso-modo la même chose:
    • En complément de ces deux astuces, passez le governor de votre CPU en mode "Conservative" au lieu de "Schedutil" ou "Performance". Le CPU aura moins tendance à monter en fréquence à la moindre sollicitation (Utilisez les applets de contrôle de fréquence de votre environnement de bureau).
    • Notez que d'autres facteurs peuvent provoquer la chauffe de votre ordinateur, comme le GPU. Conseil: Dans les jeux, activez la synchronisation verticale et limitez à 60 fps (images par seconde). C'est généralement largement suffisant pour les jeux et évite de faire tourner le GPU à fond pour calculer 160 fps ou plus.
  • Changer le governor de votre CPU : Le governor est un algorithme qui va adapter la fréquence de vos CPU à la demande. Faire monter la fréquence des CPU est utile pour calculer plus vite, mais consomme plus de courant et fait plus chauffer les CPU. Il est donc utile de monter en fréquence pour avoir de bonnes performances, mais redescendre vite quand le CPU ne fait pas grand chose afin de ne pas consommer inutilement.
    • Il en existe plusieurs. Voici les principaux:
      • On-demand : Va faire monter rapidement la fréquence du CPU si des processus l'exigent. Re-descend assez vite aussi.
      • Schedutil : Ce governor est plus près du CPU et répondra plus vite que On-demand au sollicitations très brèves. Il montera et descendra plus vite en fréquence que On-demand (C'est souvent le governor par défaut.)
      • Performance fera tourner le CPU au max de ses performances. Ce mode est peu utile étant donné que Schedutil fera aussi bien, mais sans gaspiller d'énergie.
      • Powersave le fera tourner à sa vitesse minimale pour économiser de la batterie.
      • Conservative va essayer de ne pas monter inutilement en fréquence au moindre pic. Cela permet quand même d'avoir les performances max, mais de revenir à des fréquences minimales dès que possible. C'est le governor à utiliser si vous voulez limiter la chauffe inutile de votre CPU sans être gêné pour les performances.
    • Les environnements de bureau ont généralement une applet qui permet de changer facilement le governor.
    • Vous pouvez aussi le faire en ligne de commande:
      • Voir la liste des governors disponibles pour votre CPU/noyau : cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
      • Voir le governor actuellement utilisé: cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
      • Choisir un autre governor: echo "conservative" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    • Pour choisir quel governor avoir au démarrage de la machine:
      • Installez cpufrequtils : sudo apt install cpufrequtils
      • Créez le fichier /etc/default/cpufrequtils contenant:
        # valid values: userspace conservative powersave ondemand performance
        # get them from cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
        GOVERNOR="conservative"
  • Piloter les réglages de votre moniteur externe depuis Linux : La plupart des moniteurs externe fabriqués ces 10 dernières années supportent la norme DDC/CI. Il est donc possible de piloter leur réglages (luminosité, contraste, source…) depuis Linux sans avoir à manipuler les boutons de votre moniteur.
    • Installation:
      sudo apt install ddcutil
    • Lister les réglages accessibles:
      sudo ddcutil capabilities
      • Par exemple pour la luminosité, c'est le réglage numéro 10 :
        sudo ddcutil capabilities | grep "Feature: 10"
    • Prenons pour exemple la luminosité (réglage n°10):
      • Lire la valeur (cela vous affichera également les valeurs acceptées):
        sudo ddcutil getvcp 10
      • Changer la luminosité à 70%:
        sudo ddcutil setvcp 10 70
    • Vous avez bien entendu accès potentiellement à d'autres réglages, selon votre moniteur. Exemples (bien sûr cela dépend des moniteurs):
      Feature: 12 (Contrast)   (Contraste)
      Feature: 14 (Select color preset)  (Température de couleur)
      Feature: 60 (Input Source)
      ...
    • Il existe une interface graphique qui marche plus ou moins bien pour y accéder aussi : https://github.com/digitaltrails/vdu_controls ou encore le paquet gddccontrol (sudo apt install gddccontrol).
  • Tester vos supports (clés USB, microSD, SSD, etc.) : Il peut être utile de tester vos supports USB pour être sûr qu'ils ne sont pas défectueux ou qu'ils ne mentent pas sur leur capacité (Certains supports annoncent une grande capacité, mais ont en réalité une capacité plus faible et les écritures bouclent. Vous ne le verrez pas au début.)
    • Pour réaliser ce test, votre support doit être vide.
    • Vous aurez besoin des outils f3 :
      sudo apt install f3
    • Pour tester votre support, dans l'ordre:
      • Formattez votre support (de préférence en FAT, car ext3/ext4 conservent une zone réservée, ce qui empêche de tester le support en intégralité).
      • Lancez f3write :
        f3write /media/utilisateur/VotreSupport

        et attendez. Il va créer plusieurs fichiers de 1 Go jusqu'à remplir le support. (Cela peut durer longtemps).

      • Une fois terminé, la ligne Average writing speed vous donnera une idée réaliste de la vitesse d'écriture de votre support. (Notez que la valeur n'est pas forcément exacte et peut être influencée par l'activité sur votre ordinateur durant l'écriture, ainsi que par les limites du hub/controlleur USB sur lequel vous avez branché votre clé).
      • Débranchez la clé et rebranchez-la. (Certaine clés frauduleuses comptent sur le cache du système d'exploitation pour masquer leur vraie nature).
      • Maintenant testez la lecture :
        f3read /media/utilisateur/VotreSupport
        • La ligne Data LOST doit être à zéro. Si ce n'est pas le cas, alors votre support n'est pas fiable. Vous ne devriez pas l'utiliser pour stocker des données.
        • La ligne Average Reading speed vous donnera une idée réaliste de la vitesse de lecture de votre support.
    • Documentation officielle des outils f3 (avec des exemples) : https://fight-flash-fraud.readthedocs.io/en/latest/usage.html
  • Un serveur web TOR facilement pour servir du contenu statique :
    • Les avantages ? Un serveur web sans avoir besoin d'ouvrir un port dans votre firewall/routeur, sans avoir besoin de révéler votre véritable adresse IP, sans avoir de nom de domaine à vous, non censurable (ni par IP, ni par nom de domaine), et accessible même si vous êtes derrière un NAT/routeur. Bien sûr ceux qui consultent la page doivent utiliser le navigateur TOR.
    • Installer le nécessaire:
      sudo apt install tor
      pip3 install --user onionshare-cli
    • Placer votre contenu dans ~/www (Un fichier index.html n'est pas obligatoire. Si vous n'en avez pas, il présentera la liste des fichiers.)
    • Lancer le serveur:
      onionshare-cli --public --persistent ~/tor-website.json  --website ~/www
    • L'adresse en .onion du serveur va s'afficher : Vous pouvez la partager.
    • Si vous changez des fichiers dans ~/www, vous devrez redémarrer le serveur (CTRL+C pour l'arrêter).
    • Le serveur n'est pas super-véloce, mais c'est suffisant pour distribuer quelques fichiers.
    • Explication des options:
      • --website : Demande à OnionShare de fonctionner comme un serveur web pour partager le répertoire que vous lui indiquez.
      • --public pour autoriser une connexion sans clé (comme un simple serveur web).
      • --persistent : Permet de spécifier un fichier de configuration de manière à ce que votre serveur ait toujours la même adresse (il va créer le fichier s'il n'existe pas).
    • Si vous voulez loguer les accès dans un fichier, ajoutez ceci en fin de ligne de commande : 2>&1 | tee access.log
    • Pour changer l'adresse de votre serveur TOR, arrêtez-le et supprimez le fichier ~/tor-website.json
    • En utilisant plusieurs fichiers de config json différents, vous pouvez sans problème lancer plusieurs serveurs TOR sur votre ordinateur, chaucun servant un répertoire différent avec sa propre adresse en .onion.
    • Si vous n'êtes pas à l'aise avec la ligne de commande, vous pouvez bien sûr passer par l'interface graphique : https://onionshare.org/
  • Forcer le lancement d'un programme sur un écran ou un autre (pratique par exemple si vous lancez des jeux avec Wine qui se mettent en plein écran) : DISPLAY=:0.0 nomDuProgramme
  • Voir d'un coup d'oeil Charge CPU, fréquences, températures et ventilateurs: s-tui est très bien:
    • Installation : sudo apt install s-tui
    • Pensez à cocher la case "UTF-8" pour avoir des graphiques plus précis.
    • Cela marche dans un terminal, donc même à distance via une connexion ssh ou sur un RaspberryPi.
    • Si vous voulez charger un peu votre CPU pour voir jusqu'où monte la température, installez le paquet "stress" (sudo apt install stress) et dans s-tui cochez la case "Stress"
  • N'oubliez pas CommandLineFu.com qui est une intarissable source d'astuces pour Linux.
  • bat (page officielle) est un cat amélioré, avec coloration syntaxique et même support Git. Il utilise aussi less pour faire la pagination.
    • Installation : sudo apt install bat sur les distributions récentes, ou bien téléchargez le package pour votre distribution (recommandé) : https://github.com/sharkdp/bat/releases
    • Note: Sous Ubuntu et dérivés, à cause d'un conflit, l'exécutable d'appelle batcat. Pour éviter cela, installez directement le .deb comme indiqué ci-dessus.
  • fzf (page officielle) est un fantastique outils de recherche qui fait gagner un temps considérable. Il permet de faire une recherche approximative.
    • Installation:
      git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
      ~/.fzf/install
    • Utilisation:
      • Recherche de répertoires (à partir du répertoire actuel): Alt+C, choisissez, pressez ↵ Entrée. Vous êtes dedans.
      • Recherche dans votre historique bash : Ctrl+R
      • Recherche de fichier: Commencez à taper une commande en terminal (cat ou autre) puis Ctrl+T pour rechercher un fichier à partir du répertoire actuel.
        • Vous pouvez aussi faire, par exemple cat ** puis presser la touche TAB.
        • Ça marche bien sûr également avec xdg-open pour ouvrir des pdf, fichiers LibreOffice, etc.
      • Vous pouvez également piper n'importe quoi dans fzf pour rechercher dedans (cat *.txt | fzf)
      • Par défaut fzf affichera en premier les résultats qui correspondent exactement à ce que vous avez tapé, puis les résultats proches.
  • Voir et modifier la config DNS si votre réseau est géré par NetworkManager:
    • Voir la liste des connexion : nmcli con show
    • Voir la config DNS d'une connexion : nmcli con show NOMCONNEXION | grep dns
    • Changer les DNS : nmcli connection modify NOMCONNEXION ipv4.dns "185.222.222.222,45.11.45.11"
  • Les bonnes pratique pour écrire des scripts shell pour éviter des catastrophes:
    • Squelette :
      #!/usr/bin/env bash
      cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
      set -o errexit
      set -o nounset
      set -o pipefail
    • Explications :
      #!/usr/bin/env bash
      cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"  # Se placer dans le répertoire du script avant exécution.
      set -o errexit      # Arrêter l'exécution du script si une commande fait une erreur.
      set -o nounset      # Arrêter l'exécution du script si on utilise une variable non définie.
      set -o pipefail     # Arrêter l'exécution du script si une commande dans un pipe fait une erreur.
linux-vrac.txt · Dernière modification : 2024/01/30 14:32 de sebsauvage