SVN fusion des révisions de trunk dans votre branche

Marqué :

À partir de la branche

svn log

Affiche le numéro de révision lors de la création de ma branche

------------------------------------------------------------------------
r23 | stereosv | 2009-02-17 11:42:28 -0500 (Tue, 17 Feb 2009) | 1 line

creating branch for xyz

Maintenant j'ai besoin de connaître la révision actuelle du trunk. La commande svn update exécutée à partir du trunk retourne la version actuelle.

> svn update
At revision 25.

Dans mon cas, le trunk est à la révision 25... impliquant qu'il n'y a eu que deux commit depuis la dernière fois que j'ai checked out ma branche. Sympa.

Maintenant, il faut transporter ces changements dans ma branche. De retour sur le répertoire de ma branche, il est temps de mettre les numéros de révision.

svn merge -r 23:25 svn+ssh://username@svnserver/home/username/svn/project/trunk

Ce qui est fait est un merge de tous les changements survenus entre la révision 23 (quand j'ai créé ma branche) et la révision 25 (la version la plus récente du trunk) dans le trunk dans ma copie locale.

Maintenant il est temps de check in ma branche, avec les changements mise à jour à partir du trunk.

svn ci -m "Merged trunk changes r23:25 into my branch"

Se connecter en SSH avec sa clé publique

Marqué :

Se connecter en SSH avec sa clé publique (plutôt que son mot de passe) présente quelques avantages : sécurité renforcée, possibilité de définir un mot de passe « vide »... Voici les étapes à suivre pour configurer son compte SSH avec clé publique :

Générer sa clé privée sous Windows

Nous allons utiliser le générateur de clés fournis avec PUTTY, un logiciel gratuit, disponible à cette adresse: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html (choisir le "Windows Installer", ou bien télécharger puttygen.exe).

Lancer PuTTYGen, générer une paire de clé SSH-2 DSA de 1024 bits et sauvegarder la clé privée dans un dossier personnel de votre ordinateur. Copier la clé publique affichée (avec un CTRL-C) et la sauver dans un fichier temporaire authorized_keys (il ne faut pas cliquer sur Save Public key mais bien faire un copier-coller).

Exemple de clé publique (sur une seule ligne):

ssh-dss AAAAB3NzaC1kc3MAAACBALWEC3j9qDVBUD2GDSiGA7N265of/V0vFXql21tbLLoLxboVy6usY4mcwRtWHes9MvDv64TWH81I72pwUtRqsfnsWuuvq3X/Pw6FWdMKWo91+B+xNDlZE6HmW6PigM4pqXDsiwvP3/CA1rgF/Dkaeq3UVyVux5ZbKexb/JsBC4I9AAAAFQDpGJFV1yrx6AcwuT61jSZ3JIPrxQAAAIBXDoi7WeNfoGMpcw0LaeMzROVr53q3+rUS99kyi6153TSiDph8RlURuBU2C4y67lARYqJy/9Hbm7mShKEUkXhrDacevJfuF5zI9WJ5Jkqt/FtPDzhEmWqhW6EDlckeQFgRM4NE32uBOCEIGb0Ac7M5QY/t+igb49nrq79goYMxdQAAAIARjdjIlrzwa5iew8CKuf97DTCbGy9I4ZLpE9GVCLEi/mgm4+JOCD8Y3exlNdWJogmcc/ec1wJzdP7zgm/I7uraoL6B7BeGfzdQ2KWWvNL7unhGW2q8Rwegh9aQJnapCQ/0irTHhx65XB3oq+Yk30GDEtYioewuGAvSXH8TD0Dtgw== dsa-key-20090731

Uploader sa clé sur le serveur depuis Windows

A l'aide de votre logiciel FTP, créer le dossier .ssh (activer l'option "Afficher les fichiers cachés" pour visualiser le dossier créé). Mettre le fichier authorized_keys dans ce dossier .ssh.

Se connecter en SSH Depuis Windows

Lancer PUTTY.exe. Lors de la première connexion, il faut configurer une session:

Dans la colonne de gauche "Category", choisir SSH et renseigner:

  • Prefered SSH Protocol version: 2
  • Développer (cliquer sur +) pour afficher l'option Auth, et dans Private Key file for auth, indiquer le chemin pour accéder à votre clé privée sur votre ordinateur.

Retourner à la catégory Session, et cliquer sur "save".

Désormais, vous avez configuré une session, que nous avons appelé ssh.alwaysdata.com, qui pourra être utilisée directement ou via SVN.

Double-cliquez sur cette session. Vous devriez être connecté automatiquement, grâce à votre clé privée.

Générer sa clé privée sous Linux ==

$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh
$ ssh-keygen -t dsa -f ~/.ssh/id_dsa

Si vous voulez ne jamais avoir à rentrer votre mot de passe lorsque vous vous connecterez en SSH, indiquez une « passphrase » vide.

Uploader sa clé sur le serveur depuis Linux

ssh-copy-id -i ~/.ssh/id_dsa.pub user@ssh.alwaysdata.com

Remplacez « user » par le nom de votre utilisateur SSH.

Uploader sa clé sur le serveur depuis Mac OS X (ou si ssh-copy-id n'est pas disponible)

Copiez votre clé sur votre compte

scp ~/.ssh/id_dsa.pub user@ssh.alwaysdata.com:/home/user

Connectez-vous en ssh avec votre nom d'utilisateur et mot de passe et copiez le contenu de la clé dans .ssh/authorized_keys

mkdir -p ~/.ssh
chmod 0700 ~/.ssh
cat id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Supprimez enfin le fichier id_dsa.pub

rm id_dsa.pub

Se connecter en SSH Depuis Linux

À la prochaine connexion SSH, votre passphrase vous sera demandée (ou rien du tout si votre passphrase est vide).

Si cela ne fonctionne pas ...

  • Vérifiez que le fichier authorized_keys se trouve bien dans le dossier .ssh dans le dossier de démarrage de l'utilisateur SSH. Pour l'utilisateur <user>, c'est /home/<user>/. Si vous avez créé un autre utilisateur SSH, c'est le dossier que vous avez désigné lors de sa création.
  • Dans le fichier authorized_keys, vérifiez que la clé publique est bien sur une seule ligne, et ne contient pas de commentaires ou autres caractères etranges.

Installation de ROR

Ruby

Sur debian

> sudo apt-get install ruby1.8-dev

Ruby of Rails

en étant l'utilisateur root

> gem install rails

driver mysql

Normalement

> gem install mysql

sinon sous OSX

> sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

mod_rails

en étant l'utilisateur root

> gem install passenger
> passenger-install-apache2-module

Coller les lignes dans le httpd.conf d'apache. Sous OSX, ces lignes sont

LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-2.2.4
PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Ajouter un vHost par domain

<VirtualHost *:80>
    ServerName www.foo.com
    DocumentRoot /webapps/foo/public
    RailsBaseURI /rails
    RailsEnv development

    <Directory "/webapps/foo/public">
        Options FollowSymlinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

Count files

Marqué :

Count files recursivly :

ls -laR | wc -l

Gestion des processus

Marqué :

Les caractéristiques d'un processus

On a vu auparavant, qu'on pouvait à un moment donné avoir plusieurs processus en cours, à un temps donné. Le système doit être capable de les identifier. Pour cela il attribue à chacun d'entre eux, un numéro appelé PID (Process Identification). Un processus peut lui même créer un autre processus, il devient donc un processus parent ou père, et le nouveau processus, un processus enfant. Ce dernier est identifié par son PID, et le processus père par son numéro de processus appelé PPID (Parent Process Identification).

Tous les processus sont ainsi identifiés par leur PID, mais aussi par le PPID du processus qui la créé, car tous les processus ont été créés par un autre processus. Oui mais dans tout ça, c'est qui a créé le premier processus ? Le seul qui ne suit pas cette règle est le premier processus lancé sur le système le processus init qui n'a pas de père et qui a pour PID 1.

Visualiser les processus

On peut visualiser les processus qui tournent sur une machine avec la commande : ps (options), les options les plus intéressantes sous HP-UX sont -e (affichage de tous les processus) et -f (affichage détaillée). La commande ps -ef donne un truc du genre :

UID     PID  PPID  C STIME      TTY     TIME    COMMAND  
root    1    0     0 Dec 6      ?       1:02    init  
...  
jean    319 300    0 10:30:30   ?       0:02    /usr/dt/bin/dtsession  
olivier 321 319    0 10:30:34   ttyp1   0:02    csh  
olivier 324 321    0 10:32:12   ttyp1   0:00    ps -ef

La signification des différentes colonnes est la suivante:

  • UID nom de l'utilisateur qui a lancé le process
  • PID correspond au numéro du process
  • PPID correspond au numéro du process parent
  • C au facteur de priorité : plus la valeur est grande, plus le processus est prioritaire
  • STIME correspond à l'heure de lancement du processus
  • TTY correspond au nom du terminal
  • TIME correspond à la durée de traitement du processus
  • COMMAND correspond au nom du processus.

Pour l'exemple donné, à partir d'un shell vous avez lancé la commande ps -ef, le premier processus à pour PID 321, le deuxième 324. Vous noterez que le PPID du process " ps -ef " est 321 qui correspond au shell, par conséquent le shell est le process parent, de la commande qu'on vient de taper. Certains processus sont permanents, c'est à dire qu'ils sont lancés au démarrage du système et arrêtés uniquement à l'arrêt du système. On appelle ces process des daemons, le terme démon est une francisation, daemon sont des abréviations.

Pour voir les process d'un seul utilisateur, vous pouvez taper :

ps -u olivier

D'un UNIX à l'autre la sortie peut changer. Sous LINUX par exemple ps -Al permet une sortie assez riche, en faisant un man ps, vous aurez l'éventail de tous les paramètres possibles.

Commandes de gestion des processus

Changer la priorité d'un processus

Les processus tournent avec un certain degré de priorité, un processus plus prioritaire aura tendance à s'accaparer plus souvent les ressources du système pour arriver le plus vite possible au terme de son exécution. C'est le rôle du système d'exploitation de gérer ces priorités.

Vous disposez de la commande nice pour modifier la priorité d'un processus. La syntaxe est la suivante :

nice -valeur commande

Plus le nombre est grand, plus la priorité est faible. Par exemple une valeur de 0 donne, la priorité la plus haute 20 donne la priorité la plus faible. La fourchette de valeur dépend de l'UNIX qu'on utilise.

Par exemple :

nice -5 ps -ef

Généralement on utilise nice sur des commandes qui prennent du temps, sur des commandes courantes l'effet de nice est imperceptible. On l'utilisera par exemple pour compiler un programme.

nice -5 cc monprogramme.c

Arrêter un processus

Vous disposez de la commande kill pour arrêter un processus, on doit aussi tuer un processus. Si vous voulez arrêter un processus, vous devez connaître son PID (commande ps), puis vous tapez :

kill -9 PID

Un utilisateur ne peut arrêter que les processus qui lui appartient (qu'il a lancé). Seul l'administrateur système a le droit d'arrêter un processus ne lui appartenant pas.

Lancer en processus en tâche de fond

Pour lancer une commande quelconque, vous en saisissez le nom après le prompt du shell, tant que la commande n'est pas terminée, vous n'avez plus la main au niveau du shell, vous ne disposez plus du prompt. Si la commande prend un certain temps, votre shell ne vous donnera pas la main tant que la commande n'est pas terminée, vous êtes obligé de lancer un autre shell, pour taper une autre commande. Vous disposez d'une technique simple qui permet de lancer une commande à partir d'un shell, et de reprendre aussitôt la main. Il vous suffit de rajouter un & à la fin de commande. Celle-ci se lancera en " tâche de fond ", et vous reviendrez directement au prompt du shell.

En tapant une commande en tâche de fond, vous aurez à l'affichage :

> ps ef &  
[321]  
>

A la suite de la saisie de la commande suivie d'un &, le shell vous donne immédiatement la main, et affiche le numéro du PID du processus lancé. En lançant une commande à partir du shell sans le & à la fin, et si celle-ci prend du temps à vous rendre la main, vous pouvez faire en sorte qu'elle bascule en tâche de fond, pour que vous repreniez la main.

>netscape

Vous voulez basculer netscape en tâche de fond tapez, CTRL+Z, il va afficher

311 stopped +

311 étant le PID du process netscape. Tapez ensuite bg (pour background), vous voyez s'afficher

[311]

Ca y est votre processus netscape est en tâche de fond et le shell vous rend la main.