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.
- top : trie les processus par occupation mémoire, occupation CPU, etc.
- htop : similaire au précédent, mais avec quelques barres et des couleurs
- xrestop : trie les processus qui occupent la mémoire graphique
- iotop : trie les processus par débit disque (lecture, écriture...)
- lsof : liste les fichiers ouverts
- nethogs : liste les processus utilisant le réseau
- iftop : affiche le traffic réseau par couple d'hôtes
- iptraf : affiche le traffic réseau par nombre de paquets
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.