2008 February Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for February, 2008

Niveau :      
Résumé : debootstrap

Aujourd'hui post un peu en avance, mais c'est pour des amis.

Mysql chrooté

Comment faire un mysql ou autre chrooté à la sauce debian ?

On prépare un peu de place (300M pour travailler c'est suffisant), au hasard dans /srv comme nous le recommande la FHS.

Et c'est parti :

$ cd /srv
$ mkdir -p chroots/chroot0
$ cd chroots
$ debootstrap etch chroot0

Nous avons maintenant un chroot de référence qui peut être utilisé pour plusieurs chroots si on le désire. Maintenant installons notre apache chrooté :

$ cp -a /srv/chroots/chroot0 /srv/chroots/mysql
$ chroot /srv/chroots/mysql
$ apt-get install mysql-server
$ exit

Notez que toutes les configurations seront à modifier dans /srv/chroots/mysql/etc. Et pour relancer mysql :

$ chroot /srv/chroots/mysql /etc/init.d/mysql stop

Pour mettre à jour :

$ chroot /srv/chroots/mysql apt-get update
$ chroot /srv/chroots/mysql apt-get upgrade

Selon les processus que vous voudrez lancer dans le chroot vous pourrez aussi avoir besoin de certains systèmes de fichiers spéciaux (peu probable pour un simple démon) :

$ mount --bind /dev /srv/chroots/mysql/dev
$ mount -t proc proc /srv/chroots/mysql/proc
$ mount -t sysfs sys /srv/chroots/mysql/sys

Remarquez que pour bind, debian permet de le lancer dans un chroot avec une simple option.

Notez que cette opération n'est pas nécessaire pour apache et bind qui disposent déjà des options nécessaire pour le faire d'eux même (pas dans tous les cas pour apache).


continue reading...

Niveau :      
Résumé : nohup

On m'a fait remarquer que at permettait de lancer une commande et de fermer son terminal sans craindre qu'elle ne se termine. C'est parfaitement vrai :

$ at now
> commande

Mais il existe une autre commande qui a été faite pour ça. C'est une commande de plus à apprendre, mais elle a l'avantage d'être un peu plus pratique pour les scripts.

$ nohup commande

Nohup autorise le terminal à disparaître sans que la commande ne se termine. Plus de commandes cassées en plein milieu. De plus la sortie de la commande est automatiquement enregistrée dans le fichier nohup.out. La sortie d'erreur est elle redirigée vers la sortie standard pour vous permettre d'en faire ce que vous voulez.

$ nohup commande > stderr.txt

Niveau :      
Résumé : at

A moins que vous ne soyez dopé et monté sur des toilettes mobiles, vous ne pouvez pas être 24/24h devant votre ordinateur. Mais lui reste allumé bien plus longtemps que vous. Si voulez lancer une commande au milieu de la nuit (par exemple parce que c'est la seule heure ou vous avez la bande passante suffisante), il n'est pas nécessaire de mettre votre réveil.

La commande at (paquet du même nom, non installée par défaut sous debian malgré son nom), permet de lancer une commande à un moment donné. Le principe est simple :

$ at now +1hours
> /usr/local/bin/monscript

At dispose d'un langage de description des dates très complet. Vous pouvez indiquer des dates en absolu (le 3 mars à 3h03) ou en relatif (dans 42h), et ceci avec un certains nombre d'alias prédéfinis comme now ou teatime :-) Vous trouverez les détails de ce langage dans le fichier /usr/share/doc/at/timespec (attention, il s'agit d'une notation yacc, il faut connaître les grammaires). N'hésitez pas à apprendre la syntaxe elle est réutilisée dans plusieurs autre logiciels ("date" par exemple).

Pour les commandes lancées vous pouvez taper autant les lignes que vous voulez, mais je vous conseille tout de même de les limiter au minimum et d'en faire un script si besoin. Et ne vous inquiétez pas des erreurs ou de la sortie de votre script, le tout vous sera envoyé par mail.

At est en fait une file dont l'exécution est gérée par le démon atd. Il existe d'autre commandes que at pour gérer cette file. Tout d'abord atq vous en liste le contenu (at queue). Puis atrm vous permettra d'en supprimer des éléments.

$ atq
10	Thu Feb 20 20:04:00 2008 a peck
$ atrm 10

Et enfin, le paquet at fournit une commande batch permettant en théorie de lancer une commandes "dès que la charge le permet". En pratique, cette charge n'est pas configurable ce qui lui enlève un peu de son intérêt.

Niveau :      
Résumé : mimms

Parfois vous tombez sur une page web qui vous propose de lire un flux audio ou vidéo en live. Il arrive souvent que ces flux ne vous soient pas pas proposés au téléchargement, mais seulement à la lecture (et on ne parle pas de flash).

Il existe un petit outil pour télécharger ces flux et les sauvegarder sous forme de fichier sur votre machine, il s'agit de mimms. Pour l'utiliser, il suffit simplement de lui donner l'url à télécharger.

$ mimms mms://ma-radio.net/flux fichier
# et voila, vous pouvez lire le flux avec votre lecteur préféré
$ mplayer fichier

Petite option sympa (pour les radios), mimms accepte l'option -t pour n'enregistrer qu'un nombre de minutes limité et non pas tout le flux.

Par contre vous devrez trouver vous-même l'url à télécharger en lisant le source de la page web qui le propose.

Mimms supporte les flux de type : mms:// mmst:// mmsh:// http://

Notez enfin que cela peut s'avérer utile lorsque certains lecteurs refusent de vous lire ces flux en direct (par manque de bande passante ou par un bug quelconque).

Niveau :      
Résumé : ssh -M -S

Si vous faites de nombreuses connexions ssh à une machine, soit pour lancer plusieurs shells, soit pour exécuter des séries de commandes, votre client ssh va initialiser une nouvelle connexion à chaque fois. Ceci peut devenir très lourd pour une machine un peu ancienne. En effet, ceci implique le handshake tcp, la négociation du cryptage, l'échange de clés et donc un certain temps de calcul.

Il est plus judicieux de ne faire qu'une seule connexion ssh et de multiplexer toutes vos commandes par dessus (soit à cause de la faiblesse de la machine, soit parce que vous faites un grand nombre de connexions). Heureusement, ssh a tout prévu :

# première connexion
$ ssh -M -S /tmp/master mamachine.net

# deuxième connexion
$ ssh -S /tmp/master mamachine.net

La deuxième connexion est infiniment plus rapide (ajoutez l'option -v pour en être convaincu). De plus notez que même si vous terminez la commande (ou le shell) de la première connexion, celle-ci ne sera vraiment terminée que lorsque la deuxième commande le sera aussi. Vous pouvez ainsi multiplexer autant de connexions que vous voulez, l'option -M ne sert qu'une fois pour la création du master de connexion.

Remarquez que vous pouvez utiliser n'importe quel nom de machine pour les connexions slave, c'est la syntaxe ssh qui vous force à en utiliser un, mais il n'est pas réellement utilisé, exemple :

$ ssh -M -S /tmp/master mamachine.net
# mamachine.net ou azerty c'est pareil
$ ssh -S /tmp/master azerty

Niveau :      
Résumé : echo -e

Vous croyez que 'ASCII est standard. Hé, bien ça n'a pas été le cas pendant longtemps. Entre les valeurs codées sur 5 bits, 6 bits, 7 bits, avec ou sans minuscules ou caractères spéciaux, rien n'était prévu pour que tout le monde se mette d'accord. IBM a pendant bien longtemps utilisé, et utilise encore, sur certains systèmes la norme EBCDIC qui n'a rien à de compatible avec l'ascii.

L'ASCII a donc été standardisé sur 7 bits, avec les caractères de base pour l'anglais, ainsi que divers codes comme ]+$ ... mais surtout, l'ASCII définit 32 caractères qui ne sont pas imprimables. En effet, les terminaux utilisaient (et utilisent encore) le même canal pour communiquer les caractères que pour ses appels de fonction. Ces 32 valeurs ont donc été prévues pour manipuler l'affichage. Parmi ces caractères les plus connus sont \n (retour à la ligne) et \t (tabulation). Notez des inconnus comme les caractères 14 et 15 qui permettent de changer de table de caractères (c'est grâce à eux que vous avez des interfaces textes bien dessinées), et d'autres ne sont plus du tout utilisés.

$ echo -e "\xe tqru \xf"

Notez qu'on peut envoyer des caractères à une application avec une combinaison de touches ctrl-... Mais ce n'était pas suffisant. D'un coté les caractères imprimables ont été étendus à 8 bits puis à l'unicode. D'un autre coté les fonctions du terminal ne se sont pas limitées à 32. Elles ont donc été étendues cette fois avec les séquences d'échappement ANSI. Cette fois il s'agit de préfixer une suite de caractères imprimables du caractère d'échappement (numéro 27). Il s'agit en fait d'un API. Les séquences les plus connues sont les changement de couleurs, exemple :

$ echo -e "\e[31;42mBonjour monde\e[0m"

Mais il y a pire, la plupart des terminaux utilisaient des centaines de séquences différentes (rarement standardisées). C'est ainsi qu'on a créé les bases termcap et terminfo pour essayer de faciliter la vie des clients.

Voila ce qui arrive quand on mélange données et code et qu'on ne respecte pas de standard. Faites donc attention à bien séparer code et données lorsque vous aurez à écrire un protocole.

Vous vous ennuyez au boulot ?

Alors voici quelques sites qui vous donneront des informations sur linux :

  • LinuxFr : l'incontournable, on ne le présente plus, tout le monde est bienvenu, vous pouvez même poser vos questions.
  • Kerneltrap : des gens qui lisent les mailing-list de différents noyaux, vous aurez besoin d'un certain niveau pour suivre.
  • Gcu squad : des gens qui parlent le martien, niveau incompréhensible, vous aurez besoin d'un master en pierre de Rosette pour survivre.
  • Lea linux : pour tout le monde, Léa connaît la solution à tous vos problèmes.
  • Debian administration : souvent HS, ce site contient tout de même de bons articles sur l'administration linux (pas toujours spécifique debian comme on pourrait de croire).
  • Debian package a day : un nouveau paquet régulièrement, qui que vous soyez, vous découvrirez beaucoup de choses, n'hésitez pas à participer.

Si vous vous ennuyez vraiment, lisez les historiques des comics :

  • Xkcd : pour les forts en maths, en physique, en informatique, vous aimez les blagues de geek, la philo et les sentiments, c'est pour vous.
  • Dilbert : si vous travaillez en entreprise et que vous déprimez, dites vous qu'il y a pire ...
  • User friendly : vous travaillez dans le monde de l'informatique et connaissez les jeux de rôle ? alors reconnaissez vos collègues.
  • Geekscotes : enfin un comics en français, allusions à l'actualité et au petit monde du libre.

Et j'en oublie des meilleurs ...
Bonne lecture