Voici quelques documents relatifs à Linux. Il y a de tout. Ce n'est pas trop spécifique à une distribution, sauf si cela est précisé.

Ces quelques pages ont souvent été écrite au fur et à mesure des commandes tapées. Soyez indulgent avec la forme, mais corrigez moi sur le fond. Merci.

Dans ce répertoire, vous pouvez aussi trouver ce qu'il convient pour:


Retour
Date de mise à jour: 11/05/04

Quelques petites astuces qui ont pu me servir et me servent encore.

Par R. Suinot: rsuinux@gmx.fr

Contenu


Rechercher un fichier dans un RPM

Pour connaitre le nom du paquet d'ou provient un fichier, vous pouvez passer par une interface graphique, ou utiliser cette méthode (en console, bien sur!)

$ for i in /mnt/cdrom/Mandrake/RPM:* ; do rpm -qpl $i | grep  ; done
Explication: vous listez le répertoire /mnt/cdrom/Mandrake/RPMS/ grace à une boucle, puis vous appliquez dessus la commande rmp -qpl, qui permet d'afficher le contenu du paquet passé en paramètre, et vous finissez par un grep pour trouvez le nom du fichier. Si vous voulez, vous pouvez aussi passez des paramètres à grep, pour, par exemple, afficher plus d'information.


Plusieurs sessions X  sur une même machine

Ceci n'est pas recommandé sur une machine peu puissante, car le serveur X consomme beaucoup de ressources, ainsi que l'interface graphique que vous ne manquerez surement pas d'exécuter! Mais pour la démo, voici la marche à suivre.

$ X :1 & ; xterm -display :1 & ; icewm -display :1 &
La, vous avez un serveur X, numéroté 1 (celui par defaut porte le numéro 0), puis vous exécutez xterm et vous finissez par le gestionnaire graphique icewm (c'est celui que je préfère). Vous pouvez faire mieux de cette manière:
$ startx -- :1 &
Là, c'est plus simple, mais plus lourd à l'exécution (je pars du principe que startx vous lance kde par defaut).
Plus fort encore: si vous utilisez gdm (gnome display manager), editez le fichier /etc/X11/gdm/gdm.conf et dans la partie [servers], placez ceci:
0=Standard vt7
1=Standard vt8
Et vous voilà avec deux bannières de connexion sur votre machine: vous passez de l'un à l'autre avec la séquence de touches ctrl+alt+F7 ou ctrl+alt+F8


Connaitre l'utilisateur d'un répertoire

Si vous n'arruvez pas à éjecter votre cdrom, c'est peut-être que celui-ci est encore utilisé par une application ou un utilisateur. Voila comment le savoir (exemple: qui a acces en ce moment au répertoire /mnt/cdrom/themes/):

$ /bin/fuser -uv /mnt/cdrom/themes/

                         USER        PID ACCESS COMMAND
/mnt/cdrom/themes/       admin       405 ..c..  gmc
A partir de là, vous pouvez maintenant tuer l'application, ou l'utilisateur (pas physiquement, bien sur!), et éjecter le cdrom.
$ kill 405
$eject /mnt/cdrom


Connaitre la place sur le disque dur

Pour la taille de vos données dans un de vos répertoire, voici comment faire, avec redirection dans un fichier pour une lecture ultérieure:

$ du -ha --max-depth=4 | sort -n > essai.txt
cela donne par exemple pour mon répertoire temporaire:
$ cd ~/tmp
$ du -ha --max-depth=2 | sort -n > essai.txt
$ less essai.txt
(je coupe ici, et ne montre que la fin du fichier)
..
364k    ./tcputils-0.6.
388k    ./povfront-1.3.5/povfron
408k    ./ltmodem-6.00a1/DOC
408k    ./povfront-1.3.5/povfront.
440k    ./bandmin-0.8
636k    ./ltmodem-6.00b1
932k    ./flash_linux/libflashplayer.s
960k    ./flash_linu
essai.txt lines 111-166/166 byte 4834/4834 (END)   (press RETURN)


Monter un scanner scsi à chaud

Ceci est tiré de SCSI-Programming-HOWTO (page 4) Je dispose d'un scanner SCSI 1 chez moi, que je ne mets pas toujours en marche. Et donc, lorsque je veux m'en servir, je n'ai pas envie de redémarrer complètement mon ordinateur. Je fais donc un 'montage à chaud' du scanner.

ATTENTION

, le scanner n'est jamais débranché du port SCSI! ce n'est pas du USB ou du PCMCIA! je ne fais que mettre un peu d'électricité, et demande à ma linuxette de reconnaitre le scanner. Il va s'en dire que je ne suis en aucun cas responsable des dommages qu'il pourrait en résulter si vous appliquez cette méthode chez vous! Vous voilà prévenue! Ceci dit, ça marche chez moi.
$ su
Password:
# echo "scsi add-single-device a b c d" > /proc/scsi/scsi
Ici, a, b, c et d sont définis de la façon suivante :
a == identificateur de l'adapteur (le premier a l'id 0)
b == canal SCSI sur l'adapteur (le premier a le numero 0)
c == ID
d == LUN (la premiere ayant le numero 0)
Mon scanner est 'référencé' dans la chaine scsi comme le numéro 2, j'utilise donc :
"scsi add-single-device 0 0 2 0"
Voilà! C'est pratique, mais il ne faut pas en abuser! (cf howto cité plus haut)


Connaitre le type d'un fichier

Vous pouvez parfois, avoir un fichier dont l'extention du nom ne vous est pas connue, ou dont vous doutez que l'extention soit la bonne, alors voila comment connaitre le type du contenue (exemple avec un fichier perso):

$ file dominique
dominique: ISO-8859 news text, with very long line
La, c'est du texte, on peut utiliser vi!


Disposer du pavé numérique sous X (même lors de la demande de login)

Ceci est valable pour la distribution Mandrake, pour les autres, je ne sais pas. Vous pouvez me faire part de votre expérience, je la placerai ici. Pour utiliser le pavé numérique dès la demande de login, vous pouvez utiliser cette méthode:
éditer le fichier Xsetup_0, et demandez à exécuter le programme enable_X11_numlock:

$ su
Password:
# vi /etc/X11/xdm/Xsetup_0
et ajouter:
/usr/X11R6/bin/enable_X11_numlock
:x (pour  sauver le tout)
C'est tout.


La même chose que ci dessus, mais en console

En root bien sûr, éditer le fichier /etc/rc.d/rc.local, sous Mandrake/Redheat, ou /etc/init.d/?? sous débian, et ajoutez ceci en fin de fichier:

for tty in /dev/tty[1-9]*;
  do
    setleds -D +num < $tty > /dev/null
  done
Apparemment, sous la dernière version de Mandrake, ceci n'est plus nécésaire, mais je vous donne les commandes, sait-on jamais...


Nettoyer les fichiers log

Pour gagner "un peu" de place, vous pouvez supprimer les fichiers de log les plus vieux. Pour cela, vous devez les rechercher, puis les effacer. Facile, il suffit de demander gentiment à find de les chercher, puis à rm de les effacer. Evidemment, il faut être sur de vouloir éliminer ces fichiers (en cas de problèmes, vous ne pourrez plus étudier vos anciens log). Je vous propose donc, d'abord, de voir quels sont les fichiers trouvés

$ su
Password:
# find /var/log/ -mtime +3 -exec ls -l {} \;
-rw-r--r--    1 root     news           32 mai  4 06:30 /var/log/news/news.crit.1.gz
-rw-r--r--    1 root     news           31 mai  4 06:30 /var/log/news/news.err.1.gz
-rw-r--r--    1 root     news           32 mai  3 06:30 /var/log/news/news.crit.2.gz
-rw-r--r--    1 root     news           32 avr 20 06:29 /var/log/news/news.crit.3.gz
-rw-r--r--    1 root     news           31 mai  3 06:30 /var/log/news/news.err.2.gz
....
Nous voyons qu'il y a plein de fichier compacté, rien de bien utile puisque je n'ai pas de problème en ce moment, donc:
$ su
Password:
# find /var/log/ -mtime +3 -exec rm -f {} \;
Je vous laisse vous reporter aux pages de man pour plus d'info sur les paramètres de find ( surtout le switch -exec).


Inspection du réseau

Si vous voulez vérifier ce qui est ouvert ou pas sur votre réseau et/ou votre machine, voici quelques petits 'trucs':
le programme à utiliser s'appel netstat. En premier, vous pouvez connaitre la façon dont seront dirigé vos connexions:

$ netstat -r
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
164.1.152.0     0.0.0.0         255.255.248.0   U        40 0          0 eth0
0.0.0.0         164.1.152.122   0.0.0.0         UG       40 0          0 eth0
Nous voyons la carte réseau (eth0) la passerelle: 164.1.152.122, le masque de réseau, et l'adresse réseau: 164.1.152.0.
Ensuite, vous pouvez voir les services ouverts, et le pid et/ou le nom du programme qui est derrière ce service, mais pour cela, nous devons être sous root:
$ su
Password:
# netstat -ntaulp
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:1024            0.0.0.0:*               LISTEN      330/xinetd
tcp        0      0 0.0.0.0:515             0.0.0.0:*               LISTEN      287/lpd
tcp        0      0 0.0.0.0:5865            0.0.0.0:*               LISTEN      424/junkbuster
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      171/portmap
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      1706/X
tcp        0      0 0.0.0.0:6064            0.0.0.0:*               LISTEN      385/Xprt
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      312/wwwoffled
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      312/wwwoffled
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      297/sshd
tcp        0      0 192.168.2.1:1034        192.168.1.2:22          ESTABLISHED 1761/ssh
tcp        0      0 192.168.2.1:1071        192.168.1.2:1479        TIME_WAIT   -
udp        0      0 0.0.0.0:111             0.0.0.0:*                           171/portmap

Nous pouvons donc voir les services ouverts, ceux en attente (=LISTEN) les connexions établies, et celle fermées. Avec ce genre d'info, vous pouvez déjà rechercher les problèmes sur votre réseau.
Pour les parametres exclusivement sur votre (vos) carte(s) réseau, vous pouvez (devez?) utiliser ifconfig:
$ /sbin/ifconfig
eth0      Lien encap:Ethernet  HWaddr 00:40:F4:44:22:67  
          inet adr:192.168.2.1  Bcast:192.168.2.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1511 errors:0 dropped:0 overruns:0 frame:10
          TX packets:1564 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100 
          RX bytes:1119710 (1.0 MiB)  TX bytes:171754 (167.7 KiB)
          Interruption:3 Adresse de base:0x300 

lo        Lien encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:235 errors:0 dropped:0 overruns:0 frame:0
          TX packets:235 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:69697 (68.0 KiB)  TX bytes:69697 (68.0 KiB)
Nous retrouvons nos adresses de masque et de réseau, ainsi que le numéro ip de la carte elle même. En plus, la boucle locale est là

Gestion du Syquest SCSI sous Mandrake 8.1

J'ai un vieux Syquest 40 Mo en scsi. Cela peut encore servir! Voici comment je m'en sert:

  1. Repérage du Syquest: j'ai ajouté dans /etc/fstab une ligne pour référencer le lecteur:
    /dev/sda1 /mnt/syquest auto defaults,user,noauto 0 0
  2. Partitionnement d'une cartouche: j'utilise fdisk (sous root)
    $ su
    Password:
    # fdisk /dev/sda
    
    Avant, jetez un oeil sur man fdisk...!!!!!!!!!!!!!!!!!
  3. Formattage: la, pas de problème:
    $ su
    Password:
    # mkfs -t ext3 /dev/sda1
    
  4. Et enfin, monter la cartouche:
    $ mount /mnt/syquest
    
Vous pouvez modifier les options de mkfs pour créer une partition msdos, ou ext2, ext3, .....


Copier une image disque en fichier

Parfois, on peut avoir besoin d'une copie non d'un fichier, mais de la disquette complète (boot serteur avec) (cela m'a été utile pour créer une disquette de démarrage sous dos). voila comment je m'y suis pris:
mettez la disquette à copier dans le lecteur (évident!), puis placez vous dans un répertoire:

$ cd ~/tmp
$ dd if= of=/dev/fd0
Et au bout d'un certain temps, vous avez un fichier <nom-fichie.img>.


Utiliser une image disque en fichier

Vous avez une belle image toute fraiche d'une disquette (ou d'un CDRom), et vous voulez tester son intégrité:

$ mount  /mnt/disk -o loop
$ cd /mnt/disk/
Et vous navigez dans votre 'disquette' comme si cela correspond à un répertoire standard. La méthode est identique pour un fichier *.iso


Un prompt de console différent?

Voici mon prompt de console sur le portable:
Pour info, voici les couleur disponible:
 Couleur  Valeur 
black0
red1
green2
yellow3
blue4
magenta5
cyan6
white 7
mon zolie prompt
Cela me permet de disposer sur toute une ligne, de l'endroit exacte ou je me trouve, et la couleur de savoir qui je suis:
rouge: root
bleu: user normal
Voilà ce que contient mon vichier ~/.bashr

..
couleur=`tput setaf 6`
attr0=`tput sgr0`
PS1="${attr0}${couleur}\t \u \$PWD${attr0}\n\\$ "
export PS1
..
Et quand je suis sous root, seule la couleur change.
couleur=`tput setaf 1`
Pour plus d'info, vous pouvez vous reporter à 'man tput' ainsi qu'à 'man 5 terminfo'


Couper un fichier puis le restituer (pour copier sur disquette un fichier trop gros, par exemple)

Lorsque vous avez un fichier trèsssss gros à transférer d'une machine à une autre, voici une méthode que j'utilise. Je pars d'un cas concrèt, puiqu'il m'a fallut envoyer une image iso de 130 Mo à un ami pour grauvure. Voilà comment nous nous y sommes pris:

A noter, sous windows, il est possible d'utiliser quelques soft qui peuvent faire une reconstitution des trois fichiers en un seul. (désolé, je n'ai plus le nom... Si vous le voulez vraiment, envoyez moi un mail).


Rechercher un demon particulier et le tuer, le tout dans un script ou à utiliser avec cron

Voila comment on peut rechercher, localiser, et tuer un programme, soit à partir d'un script, soit à partir d'une tache cron:

Le sudo n'est pas util si vous chercher une tache que vous avez lancé vous même.


Créer un un coup, une archive tar.gz de tout un répertoire

une commande simple, pour créer une archive compressée d'un répertoire. Vous etes dans un répertoire tmp, vous disposez d'un sous-répertoire 'Bannierre', voila comment faire le fichier Bannierre.tar.gz

$ cd ~/tmp/
$ ls -la
total 20
...
drwxr-xr-x    2 admin    admin        4096 2002-11-11 04:45 Bannierre
...
$ ls -l Bannierre
total 424
-rw-r--r--    1 admin     admin         7504 2003-01-19 04:31 Bannierre.xml
-rw-r--r--    1 admin     admin         6210 2002-11-10 05:28 Bannierre.xml.in
-rwxr-xr-x    1 admin     admin           84 2002-11-10 05:28 configure.in
-rw-r--r--    1 admin     admin          282 2002-11-11 02:46 GdmGreeterTheme.desktop
-rw-r--r--    1 admin     admin          282 2002-11-10 05:28 GdmGreeterTheme.desktop.in
-rw-r--r--    1 admin     admin         4904 2002-11-10 05:28 langues.png
-rw-r--r--    1 admin     admin          369 2002-11-10 05:28 Makefile.am
-rw-r--r--    1 admin     admin         6966 2002-11-10 05:28 Makefile.in
-rw-r--r--    1 admin     admin         7898 2002-11-10 05:28 quit.png
-rw-r--r--    1 admin     admin       177310 2002-11-18 23:01 screenshot.png
-rw-r--r--    1 admin     admin         3370 2002-11-10 05:28 session.png
-rw-r--r--    1 admin     admin         3627 2002-11-10 05:28 system.png
-rw-r--r--    1 admin     admin       177310 2002-11-18 23:01 terre4c.png
$ tar cfz Bannierre.tar.gz ./Bannierre
$ ls -l
total 396
drwxr-xr-x    2 admin     admin         4096 2003-01-19 04:31 Bannierre
-rw-r--r--    1 admin     admin       377621 2003-01-21 10:47 Bannierre.tar.gz
Voilà! simple et rapide. Vous pouvez ajouter l'option -v à tar de façon à voir la liste des fichiers inclus dans l'archive.
$ tar cfvz Bannierre.tar.gz ./Bannierre


Comment remplacer les caractères 'CR-LF' de fin de ligne par 'CR'

Si vous importez des fichiers texte de Windows vers votre linuxette, vous aurez à chaque fin de ligne de texte deux caractères: CR pour carriage return et LF pour ligne field. Hors, sous unix, seul CR suffit. Certaines applications peuvent ne pas aimer CR-LF, et en plus cela prend de la place pour rien (sur un fichier de 1000 lignes, cela prend 1000 caractères en trop). Voilà donc comment faire pour transformer vos fichier.
Nous partons d'un fichier nommé index.html (ce fut un cas personnel!). Nous allons utiliser sed et une redirection:

$ sed 's/.$//' index.html > index.html.new
Nous avons à présent, deux fichiers de façon à contrôler le résultat. Si cela nous convient, échangeons les deux fichiers:
$ mv index.html.new index.html
Pas plus dur que ça. Attention, cependant, car si vos lignes ne contiennent pas ces deux caractères (CR et LF), vous perdrez le dernier caractère de chacune de vos ligne de texte (très pénible!!!! je me suis fait avoir!).

La même chose, en perl, et lui est bien plus efficace:

 perl -pi -e 's/\r\n/\n/g' index.html 


Trouver le pid d'un programme et son utilisateur avec la commande 'ps'

Si vou rechercher un programme ou un daemon dans la forêt qu'est la commande ps, voila comment ellager un peu. La suite de commande proposée ici vous donne le nom du programme, le pid (numéro de processus) ainsi que le propriétaire:

$ ps -ef | grep apm | awk '{ print "Le pid de "$8" est "$2 " et appartient a " $1}' 
Changez apm par le nom du programme recherché (même une partie de nom, si vous voulez!)




S'il vous arrivait de vous servir de cette doc, envoyez moi un petit mot, merci!

Ce site est continuellement en chantier, surtout la partie 'Journal de bord' (cf 'Documentations').
Cependant, vous pouvez quand même me contacter et me donner vos avis/idées/corrections à rsuinux <at> gmx.fr

Mise en place du site:   11 Juillet 2001     Dernière mise à jour: 19/08/05

Vous êtes     à être passé me voir!

Valid HTML 4.01! Valid CSS!