Linux: Le gros bloc-note [Wiki de sebsauvage.net]
Astuces Linux en vrac
apropos est votre ami:
Voir les outils concernant pdf présents sur votre système ?
apropos pdf
-----
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.
-----
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).
-----
Entrer des caractères Unicode: Ctrl+⇧ Maj+U et tapez la valeur Unicode en héxadécimal.
Essayez ! Ctrl+⇧ Maj+U+2705+ESPACE : ✅
-----
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.
-----
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)
-----
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
-----
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.
-----
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
-----
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)
-----
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.
-----
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).
-----
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
-----
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"
-----
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.
-----
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]}")")"
-----
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
-----
Besoin de vous envoyer de manière automatique des messages ? : AppRise permet d'envoyer (en ligne de commande) des messages vers Telegram, Mastodon/Fediverse, Discord, Matrix, Microsoft Teams, NextCloud, Signal, Slack… couplé à Monit (ci-dessus) ça peut être intéressant.
-----
Servir un répertoire en http en 10 secondes avec RClone:
Ouvrez un terminal là où vous voulez servir les fichiers.
Tapez:
rclone serve http . --addr :8080
Et vous pouvez accéder à ce répertoire sur une machine du réseau local http://192.168.1.58:8080/
Partager un répertoire en réseau local facilement avec Windows ou Linux en utilisant RClone en mode webdav:
Ouvrez un terminal dans le répertoire que vous voulez partager.
Tapez:
rclone serve webdav . --addr :8080
Depuis Windows dans l'explorateur de fichiers > Ce PC > prenez le menu Onglet tout en haut > Connecter un lecteur réseau > entrez l'adresse du serveur RClone (exemple:http://192.168.1.58:8080/) > bouton Suivant.
Vous pouvez maintenant accéder au répertoire en lecture/écriture directement depuis l'explorateur de fichiers.
Sous Linux, la plupart des gestionnaires de fichiers permettent également le montage du répertoire.
Pour servir le répertoire en lecture seule, ajoutez l'option --read-only
Pour voir les accès aux fichiers, ajoutez l'option -v
Note: Comme il est également possible de lancer RClone sous Android via termux, on peut très bien rendre, avec la même commande, un répertoire du smartphone accessible en lecture/écriture depuis l'explorateur de Windows. 😉
— Permalien
apropos est votre ami:
Voir les outils concernant pdf présents sur votre système ?
apropos pdf
-----
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.
-----
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).
-----
Entrer des caractères Unicode: Ctrl+⇧ Maj+U et tapez la valeur Unicode en héxadécimal.
Essayez ! Ctrl+⇧ Maj+U+2705+ESPACE : ✅
-----
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.
-----
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)
-----
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
-----
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.
-----
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
-----
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)
-----
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.
-----
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).
-----
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
-----
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"
-----
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.
-----
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]}")")"
-----
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
-----
Besoin de vous envoyer de manière automatique des messages ? : AppRise permet d'envoyer (en ligne de commande) des messages vers Telegram, Mastodon/Fediverse, Discord, Matrix, Microsoft Teams, NextCloud, Signal, Slack… couplé à Monit (ci-dessus) ça peut être intéressant.
-----
Servir un répertoire en http en 10 secondes avec RClone:
Ouvrez un terminal là où vous voulez servir les fichiers.
Tapez:
rclone serve http . --addr :8080
Et vous pouvez accéder à ce répertoire sur une machine du réseau local http://192.168.1.58:8080/
Partager un répertoire en réseau local facilement avec Windows ou Linux en utilisant RClone en mode webdav:
Ouvrez un terminal dans le répertoire que vous voulez partager.
Tapez:
rclone serve webdav . --addr :8080
Depuis Windows dans l'explorateur de fichiers > Ce PC > prenez le menu Onglet tout en haut > Connecter un lecteur réseau > entrez l'adresse du serveur RClone (exemple:http://192.168.1.58:8080/) > bouton Suivant.
Vous pouvez maintenant accéder au répertoire en lecture/écriture directement depuis l'explorateur de fichiers.
Sous Linux, la plupart des gestionnaires de fichiers permettent également le montage du répertoire.
Pour servir le répertoire en lecture seule, ajoutez l'option --read-only
Pour voir les accès aux fichiers, ajoutez l'option -v
Note: Comme il est également possible de lancer RClone sous Android via termux, on peut très bien rendre, avec la même commande, un répertoire du smartphone accessible en lecture/écriture depuis l'explorateur de Windows. 😉
— Permalien