Outils pour utilisateurs

Outils du site


linux-vrac

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux-vrac [2018/11/09 14:08]
sebsauvage
linux-vrac [2019/04/18 09:41] (Version actuelle)
sebsauvage
Ligne 1: Ligne 1:
 ====== Linux: Le gros bloc-note ====== ====== Linux: Le gros bloc-note ======
  
-Je note dans cette page, **en vrac**, diverses astuces pour Linux. Oui, //​vraiment//​ en vrac. 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. Certaines de ces astuces sont reprises de ma page [[mint_customization|Linux Mint]].+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.
  
-<​note>​É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. ​J'utilise Linux Mint.</note>+<​note>​É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.</​note>​ 
 + 
 +  * **//​apropos//​ est votre ami**: 
 +    * Voir les outils concernant pdf présents sur votre système ? <code bash>​apropos pdf</​code>​ 
 +  * Et **//tldr// aussi**:<​code>>​ 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"​}}</​code>​ 
 + 
 +  * **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:<​code bash>​sudo progress -m</​code>​ 
 +    * //​progress//​ fonctionne avec cp,​mv,​dd,​tar,​gzip,​7z,​rsync... 
 + 
 +  * **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: ​<code bash>tar cvfz archive.tgz dossier/</code> 
 +      * Mais si vous voulez un **tar survitaminé** qui va //​beaucoup//​ plus vite, utilisez pigz:<​code bash>tar cvf - dossier/ | pigz > archive.tgz</​code>​ 
 +      * ou:<code bash>tar cvf archive.tgz -I pigz dossier/</​code>​ 
 +      * //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:<​code bash>tar xvf archive.tgz</​code>​ 
 +    * Exclure des types de fichiers: <code bash>tar cvfz archive.tgz dossier/ --exclude=*.mp3</​code>​ 
 +    * Exclure des répertoires:​ <code bash>tar cvfz archive.tgz dossier/ --exclude=chemin/​relatif</​code>​ 
 + 
 +  * **gzip/​bzip2 //beaucoup plus rapides//** (multi-coeurs):​ 
 +    * ''​sudo apt install pigz pbzip2''​ 
 +    * pigz/pbzip2 ont une syntaxe compatible avec gzip/​bzip2. 
 +    * Dans ''​.bashrc''​ mettre:<​code bash>​alias gzip='​pigz'​ 
 +alias bzip2='​pbzip2'</​code>​ 
 + 
 +  * **Besoin de compresser un répertoire le plus rapidement possible ?** 
 +    * Au lieu d'​utiliser tar avec gzip/pigz, prenez lzo. Il est //​extrêmement//​ rapide. 
 +    * Compresser:<​code>​tar --lzop -cvf archive.tar.lzo dossier/</​code>​ 
 +    * Décompresser:<​code>​tar xvf archive.tar.lzo</​code>​ 
 +    * 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 <​key>​CapsLock</​key>​ puis <​key>​é</​key>​. Ben oui c'est tout con. Même chose pour Ç, À, Ê, È, Ô... : pensez juste à activer <​key>​CapsLock</​key>​.   * **Taper un É majuscule ?** : Appuyez sur <​key>​CapsLock</​key>​ puis <​key>​é</​key>​. Ben oui c'est tout con. Même chose pour Ç, À, Ê, È, Ô... : pensez juste à activer <​key>​CapsLock</​key>​.
     * Pour **«** et **»**, c'est <​key>​AltGr-z</​key>​ et <​key>​AltGr-x</​key>​     * Pour **«** et **»**, c'est <​key>​AltGr-z</​key>​ et <​key>​AltGr-x</​key>​
 +
 +  * **Entrer des caractères Unicode**: <​key>​C</​key>​+<​key>​⇧ Maj</​key>​+<​key>​u</​key>​ et tapez la valeur Unicode en héxadécimal.
 +    * Essayez ! <​key>​C</​key>​+<​key>​⇧ Maj</​key>​+<​key>​u</​key>​+2705+<​key>​ESPACE</​key>​ : ✅
  
   * **Déplacer une fenêtre**: Faites <​key>​Alt</​key>​+clic gauche pour déplacer une fenêtre en cliquant n'​importe où à l'​intérieur.   * **Déplacer une fenêtre**: Faites <​key>​Alt</​key>​+clic gauche pour déplacer une fenêtre en cliquant n'​importe où à l'​intérieur.
  
-  * **Voir les points de montage**: C'est beaucoup plus lisible comme ça: ''​mount |column -t''​+  * **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:<​code bash>​sudo bash -c 'echo "​vm.swappiness=10"​ >> /​etc/​sysctl.conf'</​code>​ 
 +    * 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 la passant à 10 le système attendra d'​avoir 90% de RAM utilisée avant de commencer à swapper. 
 +  * **Réduction de l'​utilisation du swap (2)** 
 +    * ''​sudo apt install zram-config''​ 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'':<​code>​tmpfs /tmp tmpfs defaults,​relatime,​mode=1777,​nosuid,​size=4196M 0 0</​code>​ 
 +      * 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: 
 +    * <code bash>​sudo netstat -pntul</​code>​ 
 +    * ou:<code bash>​sudo ss -pntul</​code>​
  
   * **Partage rapide de fichiers par HTTP** : Un serveur web en 10 secondes.   * **Partage rapide de fichiers par HTTP** : Un serveur web en 10 secondes.
Ligne 21: Ligne 106:
     * Ajoutez à votre ''​.bashrc'':<​code bash>​alias ni='​nice -n 19 ionice -c3'</​code>​     * Ajoutez à votre ''​.bashrc'':<​code bash>​alias ni='​nice -n 19 ionice -c3'</​code>​
     * Puis lancez n'​importe quel programme en le préfixant par ''​ni'':<​code bash>ni tar cvfz monarchive.tgz monrepertoire/</​code>​     * Puis lancez n'​importe quel programme en le préfixant par ''​ni'':<​code bash>ni tar cvfz monarchive.tgz monrepertoire/</​code>​
 +
 +  * Un programme prend trop de CPU ? Vous voulez lui limiter le pourcentage de CPU qu'il consomme ? Utilisez **cpulimit**:​ <​code>​cpulimit -e nomDuProgramme -l 25 -b</​code>​
 +    * ''​-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 <​key>​Ctrl-c</​key>​ (pratique pour limiter temporairement un programme)
  
   * **Lancer un script au démarrage du système**:   * **Lancer un script au démarrage du système**:
Ligne 26: Ligne 116:
  
   * **Tracer tous les accès d'une application à mes fichiers perso** (remplacez //​LEPROGRAMME//​ par votre programme):<​code bash>​strace -e trace=file LEPROGRAMME 2>&1 | grep "/​home"​ > trace.log</​code>​   * **Tracer tous les accès d'une application à mes fichiers perso** (remplacez //​LEPROGRAMME//​ par votre programme):<​code bash>​strace -e trace=file LEPROGRAMME 2>&1 | grep "/​home"​ > trace.log</​code>​
 +  * 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**:<​code bash>​sudo lsof | grep NOMFICHIER</​code>​
  
   * **Gestion des services par System-V, Upstart et systemd**:   * **Gestion des services par System-V, Upstart et systemd**:
Ligne 44: Ligne 137:
   * **Astuce rapide**:   * **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 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:<​code>​sudo apt purge btrfs-tools
 +sudo update-initramfs -ukall</​code>​
  
   * **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:   * **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 [[https://​firejail.wordpress.com/​|site officiel]]).     * J'​installe d'​abord firejail: ''​sudo apt install firejail''​ (ou voir [[https://​firejail.wordpress.com/​|site officiel]]).
-    * Je créé un répertoire pour cette application dans lequel je met le script shell lanceur (qui utilise firejail):<​code bash>#​!/​bin/​bash+    * Si je veux lancer un programme en lui interdisant d'​aller sur internet, je fais:<​code bash>​firejail --net=none monprogramme</​code>​ 
 +    * 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):<​code bash>#​!/​bin/​bash
 SCRIPT=$(readlink -f "​$0"​) SCRIPT=$(readlink -f "​$0"​)
 DIR=$(dirname "​$SCRIPT"​) DIR=$(dirname "​$SCRIPT"​)
Ligne 54: Ligne 150:
 firejail --noprofile --private=. bash -c "/​usr/​bin/​skype"</​code>​ firejail --noprofile --private=. bash -c "/​usr/​bin/​skype"</​code>​
     * Le programme enregistrera ses fichiers de config dans ce répertoire,​ sans pouvoir accéder à mon vrai répertoire perso.     * Le programme enregistrera ses fichiers de config dans ce répertoire,​ sans pouvoir accéder à mon vrai répertoire perso.
-    * Si je veux interdire au programme d'​aller sur le net, j'​ajoute ''​%%--net=none%%''​ à la ligne de commande firejail. 
- 
-  * **Mini-mémo tar** (bah oui, quoi !) 
-    * Créer une archive: ''​tar cvfz archive.tar.gz répertoire/''​ 
-    * Créer une archive //beaucoup plus vite// : ''​tar cv répertoire/​ | pigz > archive.tar.gz''​ 
-      * Pensez à installer: ''​sudo apt intall pigz''​ 
-    * Décompresser:​ ''​tar xvf archive.tar.gz''​ 
-    * Exclure des types de fichiers: ''​%%tar cvfz archive.tar.gz répertoire/​ --exclude=*.mp3%%''​ 
-    * Exclure des répertoires:​ ''​%%tar cvfz archive.tar.gz répertoire/​ --exclude=chemin/​relatif%%''​ 
  
   * **Calculer la MD5 de fichiers avec sous-répertoires**   * **Calculer la MD5 de fichiers avec sous-répertoires**
Ligne 83: Ligne 170:
     * Copier dans ''​~/​.fonts''​     * Copier dans ''​~/​.fonts''​
     * Faire: ''​fc-cache -fv''​     * Faire: ''​fc-cache -fv''​
- 
-  * **gzip/​bzip2 //beaucoup plus rapides//** (multi-coeurs):​ 
-    * ''​sudo apt install pigz pbzip2''​ 
-    * Dans mon .bashrc, mettre:<​code bash>​alias gzip='​pigz'​ 
-alias bzip2='​pbzip2'</​code>​ 
- 
-  * **Image/​clonage d'une partition ext4** (en bootant sur clé USB): 
-    * ''​sudo apt install partclone''​ (ou ''​sudo apt download partclone''​ pour l'​emporter sur clé USB). partclone est plus intelligent que ''​dd''​ car il comprendre la structure des systèmes de fichiers (il ne sauvegardera pas les secteurs vides, ce qui le rend bien plus rapide). 
-    * Créer une image (compressée):​ <code bash>​partclone.ext4 -c -d -s /dev/sda1 | gzip -c1 > sda1.SYSTEM.partclone.ext4.gz</​code>​ 
-    * Restaurer une image: <code bash>​zcat sda1.SYSTEM.partclone.ext4.gz | partclone.ext4 -d -r -o /​dev/​sda1</​code>​ 
-    * Et partclone supporte aussi ext2, ext3, ntfs, etc.: Faire ''​apropos partclone''​ 
-    * ''​gzip -c1''​ pour compresser le plus vite possible, ''​-c9''​ pour compresser mieux. Ne pas hésiter à remplacer ''​gzip''​ par ''​pigz''​ (nettement plus rapide). 
  
   * **Plus de son ?** Relancer pulseaudio: ''​pulseaudio -k''​   * **Plus de son ?** Relancer pulseaudio: ''​pulseaudio -k''​
Ligne 277: Ligne 352:
   * **Du mal à lire une clé USB, un disque externe ou une carte mémoire ?** Elle est peut-être en [[https://​fr.wikipedia.org/​wiki/​ExFAT|exFAT]] (système de fichiers de Microsoft différent de FAT32, sans la limite des 4 Go par fichier).   * **Du mal à lire une clé USB, un disque externe ou une carte mémoire ?** Elle est peut-être en [[https://​fr.wikipedia.org/​wiki/​ExFAT|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''​     * Faites: ''​sudo apt-get install exfat-fuse exfat-utils''​
- 
-  * **Réduction de l'​utilisation du swap (1)** 
-    * Faire:<​code bash>​sudo bash -c 'echo "​vm.swappiness=10"​ >> /​etc/​sysctl.conf'</​code>​ 
-    * Rebooter pour prendre en compte, ou faire ''​sudo sysctl -p''​ 
-  * **Réduction de l'​utilisation du swap (2)** 
-    * ''​sudo apt install zram-config''​ et c'est tout. Les segments de mémoire compressés seront utilisés en priorité sur le swap disque. 
  
   * **Faire du ménage dans vos fichiers**:   * **Faire du ménage dans vos fichiers**:
Ligne 295: Ligne 364:
       * Installez //gdmap//: ''​sudo apt install gdmap''​ et lancez-le.       * 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. ([[http://​gdmap.sourceforge.net/​|screenshots]])       * 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. ([[http://​gdmap.sourceforge.net/​|screenshots]])
 +      * Dans le même genre: //​qdirstat//​.
       * Vous pouvez aussi utiliser (en terminal) l'​excellent ''​ncdu''​.       * Vous pouvez aussi utiliser (en terminal) l'​excellent ''​ncdu''​.
     * En recherchant les **répertoires volumineux**:​     * En recherchant les **répertoires volumineux**:​
Ligne 314: Ligne 384:
     * Liste des processus actuellement en train de faire des I/O: ''​sudo iotop -o''​ (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).     * Liste des processus actuellement en train de faire des I/O: ''​sudo iotop -o''​ (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: <​code>​sudo watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }'​)"</​code>​     * En cas de gros blocage, pour voir les processus en sont en attente des I/O: <​code>​sudo watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }'​)"</​code>​
-    * Voir aussi: ''​iostat -d''​+    * Si vous faites:<code bash>​watch "​egrep ​'(Dirty|^Cached:​)' ​/​proc/​meminfo"</​code>​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 [[captvty_linux|possible]] !   * Installer le logiciel Captvty sous Linux ?  C'est [[captvty_linux|possible]] !
  
   * Convertir un dossier de *.flac (et ses sous-répertoires) en mp3:<​code bash>​find -name "​*.flac"​ -exec ffmpeg -i {} -acodec libmp3lame -ab 128k {}.mp3 \;</​code>​   * Convertir un dossier de *.flac (et ses sous-répertoires) en mp3:<​code bash>​find -name "​*.flac"​ -exec ffmpeg -i {} -acodec libmp3lame -ab 128k {}.mp3 \;</​code>​
 +    * Il y a plein d'​autres astuces pour ffmpeg dans [[ffmpeg|cette page]].
  
   * Changer la luminosité au clavier:   * Changer la luminosité au clavier:
Ligne 362: Ligne 435:
     * Désactiver temporairement un utilisateur:​ ''​sudo vipw''​ et mettre un ''#''​ devant son login.     * 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''​).     * Déloguer de force un utilisateur:​ ''​sudo pkill -u utilisateur mate-session''​ (mate-session ou le processus visible quand vous faites ''​w''​).
- 
-  * Un programme prend trop de CPU ? Vous voulez lui limiter le pourcentage de CPU qu'il consomme ? Utilisez **cpulimit**:​ <​code>​cpulimit -e nomDuProgramme -l 25 -b</​code>​ 
-    * ''​-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 <​key>​Ctrl-c</​key>​ (pratique pour limiter temporairement un programme) 
- 
-  * Si vous avez un disque *.img (par exemple une image destinée à cette saloperie d'​[[https://​etcher.io/​|Etcher]]) et que vous voulez l'​utiliser directement dans VirtuaBox, vous pouvez le convertir en *.vdi:<​code>​VBoxManage convertdd image.img image.vdi</​code>​ 
  
   * **Monter un fichier *.img** (comme, par exemple, un fichier img de RecalBox)   * **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:<​code>>​fdisk -l recalbox.img     * Un fichier img peut contenir plusieurs partitions. Pour connaître les partitions faites: ''​fdisk -l fichier.img''​. Par exemple pour RecalBox:<​code>>​fdisk -l recalbox.img
 Disque recalbox.img :​ 2,4 GiB, 2579489280 octets,​ 5038065 secteurs Disque recalbox.img :​ 2,4 GiB, 2579489280 octets,​ 5038065 secteurs
Ligne 384: Ligne 451:
     * 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:<​code>​mkdir temp     * 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:<​code>​mkdir temp
 sudo mount -o loop,​offset=67755520 recalbox.img temp/</​code>​ sudo mount -o loop,​offset=67755520 recalbox.img temp/</​code>​
 +
 +  * Si vous avez un disque *.img (par exemple une image destinée à cette saloperie d'​[[https://​etcher.io/​|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:<​code>​VBoxManage convertdd image.img image.vdi</​code>​
 +
 +  * **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...):​ <​code>>​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</​code>​
 +    * Vous pouvez monter une partition: <​code>​mkdir part
 +sudo mount /dev/nbd0p2 part/</​code>​
 +    * Quand vous avez terminé:<​code>​sudo umount /dev/nbd0p2
 +qemu-nbd -d /​dev/​nbd0</​code>​
 +
 +
 +  * **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):​ <code bash>​sudo dd if=/​dev/​sda2 | pv | pigz > image.dd.gz</​code>​
 +      * (mettre /dev/sda pour sauvegarder TOUTES les partitions, y compris le MBR).
 +      * Restaurer: <code bash>​zcat image.dd.gz | pv | sudo dd of=/​dev/​sda2</​code>​
 +    * **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):​ <code bash>​sudo partclone.ext4 -c -d -s /dev/sda2 | pigz > image.partclone.gz</​code>​
 +      * Restaurer: <code bash>​zcat image.partclone.gz | sudo partclone.restore -d -o /​dev/​sda2</​code>​
 +      * Voir les informations d'une image partclone:<​code bash>​zcat image.partclone.gz | sudo partclone.info -s -</​code>​
 +      * Vérifier une image partclone:<​code bash>​zcat image.partclone.gz | sudo partclone.chkimg -s -</​code>​
 +      * 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:<​code bash>​sudo dd if=/dev/sda of=mbr.bin bs=512 count=1</​code>​
 +      * Restaurer:<​code bash>​sudo dd if=mbr.bin of=/​dev/​sda</​code>​
 +    * **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:<​code bash>​partclone.ext4 -c -d -s /dev/sda2 | pigz | split -d -b 4000M - image.partclone.gz.</​code>​Cela va créer des fichiers ''​image.partclone.gz.00'',​ ''​image.partclone.gz.01'',​ etc.
 +      * Pour restaurer:<​code bash>cat image.partclone.gz.* | pigz -d | sudo partclone.restore -d -o /​dev/​sda2</​code>​
 +
 +  * 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, //​[[https://​gitlab.com/​evtest-qt/​evtest-qt|evtest-qt]]//​ n'est sans doute pas dispo pour votre distribution. Vous devrez la compiler ou prendre les packages [[https://​launchpad.net/​~grumbel/​+archive/​ubuntu/​ppa/​+packages?​field.name_filter=evtest-qt&​field.status_filter=published|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 [[https://​play.google.com/​store/​apps/​details?​id=com.arachnoid.sshelper|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):<​file bash 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/​
 +</​file>​
 +
 +  * Il est assez facile de [[linux-partage-ethernet|partager une connexion Ethernet en WiFi]] ou se créé un hotspot WiFi (par exemple juste entre votre smartphone et votre ordinateur).
 +
 +  * Vous êtes chez FreeMobile ? Voici comment [[linux-sms|envoyer automatiquement (et gratuitement) des SMS lors de certains événements dans les logs]].
 +
 +  * **Backup ?** [[borgbackup|BorgBackup]] est un logiciel de backup remarquablement efficace. Je l'​utilise dans [[disque_externe|ma procédure de backup personnelle]].
 +
 +  * Je n'ai pas encore pris le temps de mettre le nez dedans, mais //​[[https://​www.synbioz.com/​blog/​astuces_zsh_installer_et_comprendre_oh_my_zsh|zsh]]//​ a vraiment l'air d'​être une tuerie ! (pour remplacer //bash//).
 +    * Autre alternative à explorer: //​[[https://​fishshell.com/​|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:<​code bash>​flock /​tmp/​abcd555 -c "sleep 30"
 +flock /​tmp/​abcd555 -c "echo coucou"</​code>​
 +
 +  * Lancer une application graphique en tant qu'un autre utilisateur ?<​code>>​ xhost +
 +> su autrecompte
 +> gimp</​code>​
 +    * 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:<​code>​identify -verbose votreimage.jpg | grep Quality</​code>​
 +
 +  * **Convertir un PDF en images**:
 +    * <​code>​pdftocairo -png fichier.pdf</​code>​
 +    * 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<​code>​pdftocairo -r 600 -tiff fichier.pdf</​code>​
 +
 +  * **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:<​code>​find .  | egrep "​\.(cbz|cbr|pdf|epub)$"​ | wc -l</​code>​
 +
 +  * **Youtube-dl** est un fantastique logiciel pour télécharger une vidéo qui vous intéresse. Il supporte YouTube, Vimeo et des centaines de sites (arte.tv, etc.).
 +    * Exemple: Mettez juste l'URL de la page, et il vous télécharge la vidéo dans la meilleure qualité: <​code>​youtube-dl https://​www.youtube.com/​watch?​v=dQw4w9WgXcQ</​code>​
 +    * Mais souvent, les distributions Linux n'ont que de vieilles versions, donc je vous recommande d'​installer à la main la dernière version:
 +      * Dé-installez celle fournie avec votre distribution (''​sudo apt purge youtube-dl''​)
 +      * Installez la dernière version:<​code>​sudo curl -L https://​yt-dl.org/​downloads/​latest/​youtube-dl -o /​usr/​local/​bin/​youtube-dl
 +sudo chmod a+rx /​usr/​local/​bin/​youtube-dl</​code>​
 +    * De temps en temps, pensez à la mettre à jour:<​code>​sudo youtube-dl -U</​code>​
 +
 +  * Récupérer l'​audio d'une vidéo YouTube en mp3:<​code>​youtube-dl --extract-audio --audio-format mp3 https://​www.youtube.com/​watch?​v=dQw4w9WgXcQ</​code>​
 +
 +  * 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 <​code>​GRUB_CMDLINE_LINUX_DEFAULT="​quiet splash"</​code>​
 +    * en: <​code>​GRUB_CMDLINE_LINUX_DEFAULT=""</​code>​
 +    * puis faites: ''​sudo update-grub''​
  
   * D'​autres astuces ? Voir [[mint_customization|cette page]].   * D'​autres astuces ? Voir [[mint_customization|cette page]].
linux-vrac.1541772500.txt.gz · Dernière modification: 2018/11/09 14:08 par sebsauvage