Trucs et astuces

Une liste de quelques trucs et astuces pour l'informatique, sous Linux.


Cette page présente des réponses simples à différents problèmes qui me sont apparus en utilisant Windows® 98 ou Linux. J'ai pris l'habitude de consigner ici les lignes de commande ou suites d'opérations permettant d'accomplir certaines tâches plus facilement.

Linux

Remarques générales

La touche [tab] permet de compléter la saisie. Exemple :

cd /v

sera complété en :

cd /var/

Pour enregistrer la sortie d'une fonction dans un fichier texte, tapez >. Exemple :

ls > fichier.txt

Pour ajouter la sortie à la suite d'un fichier existant, tapez >>. Exemple :

ls >> fichier.txt

Pour rediriger la sortie d'une commande vers l'entrée d'une autre, utilisez un « pipe ». Exemple :

ls -l | less

Pour qu'une commande soit lancée à chaque démarrage, ajoutez-la à la fin de /etc/rc.local.

Pour compter le nombre d'occurences d'un mot dans chaque fichier d'un dossier, utilisez :

grep -c mot *.txt

Pour afficher le numéro d'inode correspondant aux fichiers du dossier courant, faire :

ls -li

Ensuite, il est possible d'agir sur un fichier en utilisant la commande find et en remplaçant ### par le numéro d'inode correspondant. Par exemple, pour supprimer un fichier dont le nom serait incompatible avec rm (par exemple s'il est uniquement composé de caractères spéciaux) :

find . -inum ### -exec rm -i {} \;

Statistiques

Les commandes suivantes permettent d'observer l'activité du système. Certaines peuvent nécessiter l'installation de paquetages spécifiques.

Matériel

Pour obtenir des informations sur votre matériel, tapez en root :

lshw -html > infos.htm

Pour obtenir la version précise du noyau, des informations sur le processeur et la mémoire vive tapez :

cat /proc/version
cat /proc/cpuinfo
cat /proc/meminfo

Pour obtenir des informations sur les possibilités de votre carte réseau (Gigabit ou non, etc.), tapez :

ethtool eth0

Pour forcer une carte réseau à utiliser le mode gigabit (si disponible), tapez :

ethtool -s eth0 speed 1000 duplex full autoneg off

Pour mesurer le débit réseau entre deux ordinateurs, installez iperf sur les deux puis lancez sur l'un :

iperf -s

et sur l'autre :

iperf -c [IP]

Effacement d'un disque

Pour effacer définitivement et de manière irrécupérable tout le contenu d'un disque dur ou d'une clé USB :

dd if=/dev/random of=/dev/sdc

ou :

dd if=/dev/zero of=/dev/sdc

En faisant TRÈS ATTENTION à l'adresse du périphérique (pour ne pas effacer le mauvais) ! Attendre la fin de l'exécution de la commande. Puis, pour synchroniser toutes les mémoires-caches :

sync

Réinstallation de Grub

Lancer Linux depuis un Live CD et faire :

su
grub

Dans la console de Grub, faire :

find /boot/grub/stage1

Adapter les lignes ci-dessous en fonction de la réponse :

root (hd0,0)
setup (hd0)
quit

Clavier

Pour activer l'insertion d'une espace insécable lors de l'appui sur [Maj]+[Espace], ajoutez la ligne suivante dans ~/.Xmodmap :

keycode 65 = space nobreakspace space

Puis exécutez :

xmodmap .Xmodmap

Il est également possible de régler cela dans la configuration avancée du clavier de KDE.

Bruit du disque dur

Si vous entendez un cliquement périodique du disque dur, ceci peut être dû à l'écriture périodique du processus jbd2 sur les partitions. Vous pouvez le vérifier avec :

iotop -obtqqq | grep jbd2

Pour corriger le mode d'économie d'énergie du disque, faites :

hdparm -B 254 /dev/sda

Si cela ne suffit pas, ajoutez les options suivantes à /etc/fstab :

noatime,commit=60

Ou encore :

cp /usr/lib64/pm-utils/power.d/journal-commit /etc/pm/power.d/journal-commit

Paquetages

Si urpme ne fonctionne pas (que vous recevez un message du type) :

error: %postun( nom_du_paquetage ) scriptlet failed, exit status ***

Essayez :

rpm -e --noscripts nom_du_paquetage

Si vous ne voulez pas que certains logiciels puissent être mis à jour par urpmi (par exemple si vous utilisez volontairement une application considérée obsolète, mais nécessaire pour un besoin particulier), rajoutez une expression rationnelle correspondant au paquetage voulu dans /etc/urpmi/skip.conf :

# Ne pas mettre à jour Amarok (la 1.4.10 est merveilleuse, la 2.x horrible !)
/^amarok/

Si une mise à jour de paquetage pose problème (d'autres logiciels ne fonctionnent plus) vous pouvez (en dernier recours !) forcer l'installation de l'ancienne version par :

rpm -Uvh --oldpackage --force old_file.rpm

Pour installer Amarok sous une version récente de Mandriva (ici la 2011), il suffit d'ajouter les paquets MIB (Mandriva International Backports) :

urpmi.addmedia --update MIB-basic_64 http://mirror.pianetalinux.org/MIB/2011.0/64/basic/
urpmi.addmedia --update --raw MIB-experts_64 http://mirror.pianetalinux.org/MIB/2011.0/64/experts/

Puis cochez Amarok 1.4 dans le gestionnaire de paquetages. Libre ensuite à vous de conserver ou non MIB dans vos sources de paquetages.

Archivage

Si vous avez gravé plusieurs sessions sur un CD-ROM et que la plus récente masque les précédentes, utilisez le paramètre session=numero_de_session de mount :

mount -t iso9660 -o session=0 /dev/sr0 /media/cdrom

Pour détecter des doublons dans une arborescence de fichiers, utilisez :

fdupes -r Dossier

Images

Redimensionnement

Voici une commande pour redimensionner rapidement une grande quantité d'images. Il est nécessaire d'installer XnView/NConvert :

nconvert -out jpeg -ratio -resize 816 816 -rflag decr -q 80 -D *.jpg

Si vous ne voulez/pouvez pas installer XnView, la ligne suivante est équivalente et utilise ImageMagick :

mogrify -resize 816x816 -quality 80 -verbose *.jpg

Toutefois, j'ai observé que l'image obtenue était plus lourde avec mogrify.

Rotation sans perte

Les appareils photo récents stockent l'orientation de l'image dans les métadonnées EXIF. Cette information n'est pas prise en compte lors du redimensionnement précédent. Il est cependant possible de pivoter les images automatiquement et sans perte de qualité en utilisant la commande suivante, qui nécessite jhead :

jhead -autorot *.jpg

Si l'information d'orientation n'est pas présente dans les données EXIF (en sortie de scanner, par exemple), vous pouvez tout de même pivoter sans perte un ensemble d'images en utilisant :

jhead -cmd "jpegtran -rotate 90 &i > &o" *.jpg

Métadonnées

La commande suivante liste les fichiers ayant des métadonnées EXIF :

exiftool -p '$directory/$filename' -if '$exif:all' -r .

Allègement

La commande suivante supprime les miniatures embarquées dans les photos, sans supprimer les autres informations EXIF :

exiftool -ifd1:all= -PreviewImage= -overwrite_original *.jpg

La commande suivante optimise la compression JPEG, sans nuire à la qualité de l'image et sans supprimer les informations EXIF :

jhead -cmd "jpegtran -optimize -copy all &i > &o" *.jpg

La commande suivante optimise les fichiers PNG en supprimant toutes les informations non essentielles :

optipng -o 7 -strip all *.png

Aperçus dans Konqueror

Pour afficher les métadonnées de la plupart des types d'images dans Konqueror, installer :

kdegraphics3-common

En effet, il contient les plugins de kfile pour afficher ces informations, par exemple :

‎/opt/kde3/lib64/kde3/kfile_jpeg.so

Pour savoir quel paquetage installer pour un type de fichier particulier, par exemple pdf, utilisez :

urpmf kfile_pdf

Ménage des miniatures

Les logiciels comme Konqueror et Digikam enregistrent des milliers de miniatures dans le dossier .thumbnails, sans les supprimer lorsqu'elles sont périmées, ce qui peut produire un gonflement gênant de ce dossier (plusieurs gigaoctets après quelques mois). Pour effacer les miniatures âgées de plus d'un mois, placez-vous dans le bon dossier et faites :

find . -mtime +30 | xargs rm

Extraction depuis un PDF

Pour extraire toutes les images d'un fichier PDF :

pdfimages fichier.pdf nom

Conversion en PDF

Pour assembler une série d'image en un PDF :

convert *.jpg Fichier.pdf

Conversion en JPEG

Pour convertir plusieurs fichiers PDF en JPEG (par exemple pour les imprimer sur une imprimante qui ne lit pas le PDF), en mettant un fond blanc sur les zones transparentes :

mogrify -format jpg -background white -alpha remove -alpha off -density 250 -quality 90 -resize 2000 *.pdf

Vidéos

Les appareils photo produisent des fichiers mov, qui ne sont pas vraiment pratiques (fichier assez gros, mauvaise synchronisation du son et parfois, son indésirable).

Cette commande compresse une vidéo quelconque avec le codex x264 :

ffmpeg -i file.mpg -acodec copy -vcodec libx264 -crf 24 file.mp4

Cette commande les convertit en xvid en enlevant le son (-b xxxx représente le bitrate (en bits/s), à ajuster) :

ffmpeg -i file.mov -vcodec libxvid -an -b 3000000 test.avi

Cette commande les convertit en ogg en enlevant le son (-v xx représente la qualité, à ajuster) :

ffmpeg2theora --nosound -v 10 --optimize file.mov

Cette commande permet de fusionner une vidéo et ses sous titres en un unique fichier MKV :

mkvmerge fichier.srt fichier.avi -o fichier.mkv

Réencoder une vidéo en Xvid+MP3 en deux passes, avec désentrelacement et en utilisant 2 cœurs de processeur :

mencoder input.avi -oac mp3lame -ovc xvid -xvidencopts pass=1 -o /dev/null
mencoder input.avi -oac mp3lame -ovc xvid -xvidencopts pass=2:bitrate=-700000:threads=2 -vf pp=ci -o output.avi

Note : le -650000 indique que la vidéo doit faire 650 Mo. Attention : il faut y ajouter l'audio (disons 50 Mo), soit un fichier final de 700 Mo.

Extraire le son d'un fichier flv vers un fichier mp3 :

mencoder fichier.flv -o fichier.mp3 -of rawaudio -oac mp3lame -lameopts cbr:br=128 -ovc copy

Convertir un fichier Xvid (sans son) en WebM et en mp4 pour l'inclure dans une page web :

ffmpeg -i video.xvid -quality good -cpu-used 0 -b:v 500k -qmin 10 -qmax 42 -maxrate 500k -bufsize 1000k -threads 2 video.webm
ffmpeg -i video.xvid -quality good -cpu-used 0 -b:v 500k -qmin 10 -qmax 42 -maxrate 500k -bufsize 1000k -threads 2 video.mp4

Réparer un DVD voilé

Un de mes DVD était voilé et produisait un fort bourdonnement quand il était placé dans le lecteur. Je l'ai réparé par cette méthode. Je ne garantis pas qu'elle fonctionne pour vous.

Portez de l'eau à ébullition. Placez le DVD face lisible vers le haut. Versez l'eau bouillante sur toute la surface. Laissez-le sécher.

Si votre DVD est à nouveau lisible, copiez son contenu sur un autre support par précaution.

Musiques

Pour reformater la mémoire Flash d'un lecteur MP3 de type S1 (fonctionne en FAT16), supprimer toutes les partitions et faire :

mkdosfs -v -F 16 -I -S 2048 /dev/sdb

Pour recompresser un fichier MP3 (par exemple passer de 320 à 128 kbits/s), faire :

lame --decode input.mp3 - | lame -h - output.mp3

Pour recompresser un fichier .flac en MP3, faire :

flac -dc input.flac | lame -h - output.mp3

Et pour tous les fichiers du dossier courant :

for f in *.flac ; do flac -dc "$f" | lame -h - "${f/.flac/.mp3}" ; done;

Attention : lors de la conversion par les commandes précédentes, les métadonnées des fichier sont perdues. Il convient d'utiliser un logiciel tel que transKode pour faire des conversions sans perte de métadonnées.

Documents

Pour recompresser un PDF, utiliser les commandes :

pdftops Fichier.pdf Fichier.ps
ps2pdf Fichier.ps Fichier.pdf

ou :

pdf2ps Fichier.pdf Fichier.ps
ps2pdf Fichier.ps Fichier.pdf

Le programme pdftops est généralement meilleure que pdf2ps pour cette opération, mais pas systématiquement. Si vous avez le temps et que vous voulez vous assurer d'obtenir le fichier le plus petit possible, essayez les deux et comparez les fichiers obtenus.

Encore une possibilité :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

Pour fusionner plusieurs PDF :

pdfjoin Fichier1.pdf Fichier2.pdf Fichier3.pdf

ou :

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

Pour pivoter les pages d'un PDF, utilisez la commande ci-dessous. Les orientations sont : N pour 0°, E pour 90°, S pour 180°, W pour 270°, L pour -90°, R pour +90°, D pour +180°. Les trois dernières sont des rotations relatives à la rotation courante de la page :

pdftk in.pdf cat 1E output out.pdf

Pour supprimer des pages d'un PDF, par exemple les pages 5 et 10 sur un fichier de 20 pages, utilisez la commande suivante :

pdftk in.pdf cat 1-4 6-9 11-end output out.pdf

Pour supprimer des lignes d'un fichier (exemple : lignes 5 à 7) :

sed -i '5,7d' fichier.txt

Pour renommer un ensemble de fichiers en remplaçant une partie du nom par une autre (exemple : remplacer l'extension « html » par l'extension « htm ») :

rename .html .htm *.html

Réseau

Copie de fichiers

Pour copier un flux de données à travers le réseau (par exemple un fichier), entre deux machines sur lesquelles vous êtes identifié, lancez sur la machine de destination :

ncat -l port

Et sur la machine source :

ncat destination port

« destination » est un nom d'hôte ou une adresse IP et « port » un numéro de port quelconque libre. On peut évidemment rediriger les données depuis ou vers un fichier :

ncat -l 9999 > destination.txt
ncat -l 192.168.1.2 < source.txt

Une autre méthode fait appel à l'identification SSH : un client sshd doit être lancé sur la machine source. Lancer alors depuis la machine de destination :

scp -p port utilisateur@source:/adresse/du/fichier .

Utilisation de nmap

Attention : n'utilisez pas nmap envers une machine ne vous appartenant pas ! Cela est considéré comme une tentative d'attaque informatique !

Pour lister les ports ouverts de la machine portant l'IP 192.168.0.1 et déterminer de quel système d'exploitation il s'agit :

nmap -O 192.168.0.1

Pour lister les machines allumées sur le réseau local :

nmap -sP 192.168.0.0/24

Note sur les adresses réseau : le /24 ci-dessus désigne le masque de sous-réseau 255.255.255.0 soit 24 bits à 1.

Privacy extension en IPv6

Par défaut, l'adresse IPv6 de votre machine est calculée à partir de son adresse MAC, ce qui pose des problèmes de confidentialité, car il devient possible de suivre une machine à la trace.

Pour forcer Linux à utiliser une adresse aléatoire, tapez la commande suivante :

sysctl net.ipv6.conf.default.use_tempaddr=2

Vous pouvez également ajouter la ligne suivante dans /etc/sysctl.conf) :

net.ipv6.conf.default.use_tempaddr=2

IPv6 sur réseau local

Pour les adresses IPv6 commençant par fe80, il est nécessaire de préciser l'interface réseau, d'où l'option supplémentaire à fournir aux commandes :

ping6 -I eth0 fe80::abcd
traceroute6 -i eth0 fe80::abcd
ssh -6 peter@fe80::abcd%eth0

Afficher les « voisins » :

ip -6 neigh show

Utilisation de NTP

Le protocole NTP (Network Time Protocol) permet de mettre l'horloge de l'ordinateur à l'heure via Internet.

Par défaut, de nombreuses distributions installent de démon ntpd qui fonctionne en permanence et ouvre des ports. Il est très simple d'utiliser NTP sans ce démon :

Désinstallez le paquetage ntp mais conservez ntp-client et faites :

echo "ntpdate pool.ntp.org" > /etc/cron.daily/ntp

Ainsi, l'ordinateur sera mis à l'heure par NTP à intervalle régulier grâce à cron sans laisser un processus fonctionner en permanence.

Encodages

Dans les noms de fichiers

Pour convertir tous les noms de fichiers d'une arborescence d'un encodage vers un autre, utilisez convmv :

convmv -f from_charset -t to_charset -r directory

Le programme vous affiche alors le résultat, sans modifier effectivement les noms. Si vous êtes satisfait, relancez avec l'option --notest ; exemple :

convmv -r -f iso-8859-15 -t utf-8 * --notest

Dans un ensemble de fichiers

Pour convertir tous les fichiers texte d'un dossier d'un encodage à un autre, utilisez par exemple :

find *.txt -maxdepth 1 -type f -exec iconv -f iso-8859-1 -t utf-8 {} -o utf8/{} \;

Docker

Pour changer le dossier où est stocké le cache de Docker, éditez le paramètre DOCKER_STORAGE_OPTIONS du fichier /etc/sysconfig/docker-storage puis relancez par :

sudo systemctl daemon-reload
sudo service docker restart

Virtualisation

Pour convertir une partition de disque en machine VirtualBox, utilisez :

VBoxManage convertfromraw image.dd image.vdi

Processus

Pour envoyer un processus actif en arrière-plan (dans une console), faire [Ctrl]+[Z] puis :

bg

Pour afficher les processus tournant en arrière-plan :

jobs

Pour exécuter le processus commande en arrière-plan :

nohup commande &

Hébergement

Si votre hébergeur est Free, vos pages nommées en .php seront interprétées par PHP 4. Pour que le serveur utilise PHP 5, il faut soit renommer les fichiers en .php5, soit créer à la racine du site un fichier .htaccess contenant le texte :

php 5

Si vous développez juste un petit site en local pas un énorme site en production, je vous conseille d'utiliser lighttpd, qui fonctionne exactement comme apache mais est bien plus léger !

De même, réfléchissez à passer de MySQL (solution un peu lourde, capable de gérer des bases énormes) à SQLite (très léger et rapide, pas de processus permanent). Une interface SQLite3 est incluse par défaut dans PHP 5.3 et suivants !

Pour éviter de divulguer l'OS et la version d'Apache sur un serveur web, pensez à configurer les paramètres suivants dans /etc/apache2/conf-available/security.conf :

ServerSignature Off
ServerTokens Prod

Cette page en français a été créée par Peter à partir de connaissances ou expériences personnelles, 15 juin 2002 et modifiée pour la dernière fois 7 mars 2023. Son avancement est noté 2/3.