IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ubuntu Discussion :

Creation d'un daemon sous ubuntu


Sujet :

Ubuntu

  1. #1
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut Creation d'un daemon sous ubuntu
    Bonjour,
    j'ai crée un script 'SC1' contenant la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    nohup java -jar /home/usr/Bureau/application.jar
    par la suite , je l'ai copié dans le fichier / usr et /bin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp /home/usr/Bureau/SC1 /usr/bin/SC1
    après j'ai fait les étapes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp /etc/init.d/skeleton /etc/init.d/SC1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    gedit /etc/init.d/SC1
    PATH=/usr/sbin:/usr/bin:/sbin:/bin
    DESC="Description du service"
    NAME=SC1
    DAEMON=/usr/bin/$NAME
    DAEMON_ARGS="--options args"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chmod +x /etc/init.d/SC1
    update-rc.d SC1 defaults
    mais en faisant ca ne marche pas , est ce normal?

  2. #2
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Par défaut
    Bonjour,

    Il faut définir les arguments start et stop dans ton script d'init.d.
    Tu appelles start mais s'il n'existe pas, cela ne fonctionnera surement pas.

    Jettes un oeil dans un des scripts contenus dans /etc/init.d pour comprendre leur fonctionnement. Cela t'aidera beaucoup.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  3. #3
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    voila mon fichier dans /etc/init.d :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     GNU nano 2.2.4                                      File: /etc/init.d/qos                                                                                  
     
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          skeleton
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Example initscript
    # Description:       This file should be used to construct scripts to be
    #                    placed in /etc/init.d.
    ### END INIT INFO
     
    # Author: Foo Bar <foobar@baz.org>
    #
    # Please remove the "Author" lines above and replace them
    # with your own name if you copy and modify this script.
     
    # Do NOT "set -e"
     
    # PATH should only include /usr/* if it runs after the mountnfs.sh script
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC=" "
    NAME=qos
    DAEMON=/usr/bin/$NAME
    DAEMON_ARGS="--options args"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
     
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
     
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
     
    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh
     
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
    . /lib/lsb/init-functions
     
    #
    # Function that starts the daemon/service
    #
    do_start()
    {
            # Return
            #   0 if daemon has been started
            #   1 if daemon was already running
            #   2 if daemon could not be started
            start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                    || return 1
            start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
                    $DAEMON_ARGS \
                    || return 2
            # Add code here, if necessary, that waits for the process to be ready
            # to handle requests from services started subsequently which depend
            # on this one.  As a last resort, sleep for some time.
    }
     
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
            # Return
            #   0 if daemon has been stopped
            #   1 if daemon was already stopped
            #   2 if daemon could not be stopped
            #   other if a failure occurred
            start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
            RETVAL="$?"
            [ "$RETVAL" = 2 ] && return 2
            # Wait for children to finish too if this is a daemon that forks
            # and if the daemon is only ever run from this initscript.
            # If the above conditions are not satisfied then add some other code
            # that waits for the process to drop all resources that could be
            # needed by services started subsequently.  A last resort is to
            # sleep for some time.
            start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
            [ "$?" = 2 ] && return 2
            # Many daemons don't delete their pidfiles when they exit.
            rm -f $PIDFILE
            return "$RETVAL"
    }
     
    #
    # Function that sends a SIGHUP to the daemon/service
    #
    do_reload() {
            #
            # If the daemon can reload its configuration without
            # restarting (for example, when it is sent a SIGHUP),
            # then implement that here.
            #
            start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
            return 0
    }
     
    case "$1" in
      start)
            [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
            do_start
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      stop)
            [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
            do_stop
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      status)
           status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
           ;;
     restart|force-reload)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            log_daemon_msg "Restarting $DESC" "$NAME"
            do_stop
            case "$?" in
              0|1)
                    do_start
                    case "$?" in
                            0) log_end_msg 0 ;;
                            1) log_end_msg 1 ;; # Old process is still running
                            *) log_end_msg 1 ;; # Failed to start
                    esac
                    ;;
              *)
                    # Failed to stop
                    log_end_msg 1
                    ;;
            esac
            ;;
      *)
            #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
            echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
            exit 3
            ;;
    esac
     
    :

  4. #4
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    NAME=qos
    DAEMON=/usr/bin/$NAME
    [...]
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    Le programme que tu invoques s'appelle qos et non plus SC1.
    Est-ce que /usr/bin/qos existe vraiment ?

    (EDIT : et est exécutable ?)

  5. #5
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    oui il s'appel qos.... il figure dans /usr/bin...
    apparament le script de mon daemon ne permet pas de le relancer automatiquement en cas d'arret de service non?

  6. #6
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    apparament le script de mon daemon ne permet pas de le relancer automatiquement en cas d'arret de service non?
    Sur cette question là, les scripts init.d ne le permettent pas.
    Il faut utiliser d'autres mécanismes, comme :
    - écrire un script de surveillance / relance et l'intégrer dans une crontab
    - utiliser des outils dédiés (comme monit)
    - déclarer le lancement de la commande dans le fichier /etc/inittab (pour les systèmes qui l'utilisent encore) avec l'action respawn (solution pas propre)

  7. #7
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    laquelle est la plus utilisé?
    Est ce que je peux créer par exemple un crontab qui me permet de relancer mon application en cas d'arret?

  8. #8
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    Est ce que je peux créer par exemple un crontab qui me permet de relancer mon application en cas d'arret?
    Oui, par exemple comme dans http://bash.cyberciti.biz/web-server...-shell-script/

  9. #9
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    mon daemon fonctionne c'est bon

    je le lance désormais avec
    service qos start
    pour créer le crontab, je dois faire ca ?
    #!/bin/bash
    -------------------------------------------------------------------------
    # Copyright (c) 2003 nixCraft project <http://cyberciti.biz/fb/>
    # This script is licensed under GNU GPL version 2.0 or above
    # -------------------------------------------------------------------------
    # This script is part of nixCraft shell script collection (NSSC)
    # Visit http://bash.cyberciti.biz/ for more information.
    # -------------------------------------------------------------------------

    # uncomment if you are using Debian / Ubuntu Linux
    #RESTART="/etc/init.d/qos restart"

    #path to pgrep command
    PGREP="/usr/bin/pgrep"

    # Httpd daemon name,
    # Under RHEL/CentOS/Fedora it is httpd
    # Under Debian 4.x it is apache2
    Qos="qos"

    # find httpd pid
    $PGREP ${Qos}

    if [ $? -ne 0 ] # if apache not running
    then

    $RESTART
    fi

  10. #10
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Il faut enlever le # devant la définition de la variable RESTART
    Sinon, si la commande pgrep existe sur ton poste et est bien sous /usr/bin/pgrep, c'est bon.

    Il suffit maintenant de créer la crontab :
    - soit créer une entrée dans la crontab d'un utilisateur qui a le droit de lancer la commande "/etc/init.d/qos restart" (par exemple, l'utilisateur root)
    Lancement toutes les minutes :
    $ crontab -l
    * * * * * /path/to/script.sh >/dev/null 2>&1
    - soit rajouter un fichier dans /etc/cron.d (la syntaxe est légèrement différente)
    Lancement toutes les minutes :
    $ cat /etc/cron.d/qos
    * * * * * root /path/to/script.sh >/dev/null 2>&1

    Je trouve que passer par un fichier dans /etc/cron.d est un petit peu plus propre

  11. #11
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    Citation Envoyé par aysheaia Voir le message
    Il faut enlever le # devant la définition de la variable RESTART
    Sinon, si la commande pgrep existe sur ton poste et est bien sous /usr/bin/pgrep, c'est bon.

    Il suffit maintenant de créer la crontab :
    - soit créer une entrée dans la crontab d'un utilisateur qui a le droit de lancer la commande "/etc/init.d/qos restart" (par exemple, l'utilisateur root)
    Lancement toutes les minutes :
    $ crontab -l
    * * * * * /path/to/script.sh >/dev/null 2>&1
    - soit rajouter un fichier dans /etc/cron.d (la syntaxe est légèrement différente)
    Lancement toutes les minutes :
    $ cat /etc/cron.d/qos
    * * * * * root /path/to/script.sh >/dev/null 2>&1

    est

    Je trouve que passer par un fichier dans /etc/cron.d est un petit peu plus propre
    est ce que toute les minutes il relance le script ou il vérifie s'il est fermé ou non? si c'est le cas il le relance?

    pour la commande pgrep, elle existe, quand je fait whereis pgrep j'ai ca comme résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/pgrep /usr/share/man/man1/pgrep.1.gz
    autre question , d'après ce que j'ai compri, je dois faire un nouveau fichier sous /etc/cron.d et mettre la commande cu contab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ cat /etc/cron.d/qos    // pour creer le fichier
    * * * * * root /home/usr/Bureau/qos >/dev/null 2>&1    // pour lancer le fichier que j'ai crée

  12. #12
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    j'ai essayé les deux méthode ,
    la 1ere me dit, no crontab for root
    la 2eme : cat: qos: No such file or directory

    donc j'ai fait ca

    j'ai par la suite crée le premier fichier contenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/bin/bash
    -------------------------------------------------------------------------
    # Copyright (c) 2003 nixCraft project <http://cyberciti.biz/fb/>
    # This script is licensed under GNU GPL version 2.0 or above
    # -------------------------------------------------------------------------
    # This script is part of nixCraft shell script collection (NSSC)
    # Visit http://bash.cyberciti.biz/ for more information.
    # -------------------------------------------------------------------------
     
    # uncomment if you are using Debian / Ubuntu Linux
    RESTART="/etc/init.d/qos restart"
     
    #path to pgrep command
    PGREP="/usr/bin/pgrep"
     
    # Httpd daemon name,
    # Under RHEL/CentOS/Fedora it is httpd
    # Under Debian 4.x it is apache2
    Qos="qos"
     
    # find httpd pid
    $PGREP ${Qos}
     
    if [ $? -ne 0 ] # if not running
    then
     
    $RESTART
    fi
    que j'ai enregistré sous
    /home/usr/Bureau/cronqos.sh
    j'ai par la suite fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nano /etc/cron.d/qos
    * * * * * root /home/usr/Bureau/cronqos.sh >/dev/null 2>&1
    sachant que j'ai arreté mon service ( service qos stop) pour voir si le cron marche ou non

    et bien rien ne change

  13. #13
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    quand j'essaye le script tous seul, je recoit ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sh /home/usr/Bureau/cronqos.sh
    /home/usr/Bureau/cronqos.sh: 2: -------------------------------------------------------------------------: not found
    start-stop-daemon: unable to open pidfile '/var/run/qos.pid' for writing (Permission denied)
    donc le cron doit se lancer en tant que root....

  14. #14
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    est ce que toute les minutes il relance le script
    Oui

    Citation Envoyé par marouene_ Voir le message
    ou il vérifie s'il est fermé ou non?
    Non
    Si tu penses que le démarrage peut prendre plus d'une minute, il vaut mieux lancer le script toutes les x minutes. Par exemple, pour un lancement toutes les 5 minutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    */5 * * * * root /home/usr/Bureau/qos >/dev/null 2>&1

    Citation Envoyé par marouene_ Voir le message
    autre question , d'après ce que j'ai compri, je dois faire un nouveau fichier sous /etc/cron.d et mettre la commande cu contab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ cat /etc/cron.d/qos    // pour creer le fichier
    * * * * * root /home/usr/Bureau/qos >/dev/null 2>&1    // pour lancer le fichier que j'ai crée
    Oui.
    Il suffit juste de s'assurer que le compte root peut exécuter le script.
    Et enlever le commentaire style C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      // pour lancer le fichier que j'ai crée
    qui n'est pas un commentaire valide en bash...

    Concernant le message :
    Citation Envoyé par marouene_ Voir le message
    sh /home/usr/Bureau/cronqos.sh
    /home/usr/Bureau/cronqos.sh: 2: -------------------------------------------------------------------------: not found
    start-stop-daemon: unable to open pidfile '/var/run/qos.pid' for writing (Permission denied)
    Oui, le script cronqos.sh a pour rôle de lancer, si nécessaire, un démon ; or un démon est sensé être lancé via le compte root. C'est pour ça que, dans la crontab /etc/cron.d/qos, le 6ème champ vaut root

  15. #15
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    enfet je t'explique, moi j'ai crée mon daemon ( qui contient mon application .jar) , je l'ai nommé qos... il fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    service qos start
    service qos stop
    mais je rencontre parfois des problemes au niveau de mon application ( arret du daemon) , ce que je veux, c'est à chaque fois que je detecte un arret du daemon, je le relance automatiquement....

    Mon application fait des traitement séquentiels , si à chaque minute le cron relance l'application je terminerai jamais tous les traitements mais je ferai seulement les 1er.


    est ce que le cron que j'ai crée relance l'application si elle est arreté ou bien il la relance tout simplement chaque minute indépendamment du fait qu'elle fonctionne ou non...car si c'est le ca.... je n'aurai que le 1er traitement qui se refait...


    merci à vous

  16. #16
    Membre éclairé Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    est ce que le cron que j'ai crée relance l'application si elle est arreté
    Oui

    Citation Envoyé par marouene_ Voir le message
    ou bien il la relance tout simplement chaque minute indépendamment du fait qu'elle fonctionne ou non...car si c'est le ca.... je n'aurai que le 1er traitement qui se refait...
    Non

    C'est le rôle du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # find qos pid
    $PGREP ${Qos}
     
    if [ $? -ne 0 ] # if not running
    then
    $RESTART

  17. #17
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    Effectivement, c'est ce que je pensais, car j'ai bien tester le script avant de l'utiliser...

    Je vais tester ca et te mettre au courant


  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Par défaut
    merci ça m'a bien aidé ici

Discussions similaires

  1. [Linux]eclipse sous ubuntu Hoary
    Par soumou dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/11/2005, 21h20
  2. Compilateur manqaunt sous Ubuntu 5.10
    Par olafmenji dans le forum Linux
    Réponses: 1
    Dernier message: 01/11/2005, 12h11
  3. Creation de Requete Croisée sous SQL Server 2K
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/08/2005, 17h14
  4. [Linux]Lancement d'Eclipse sous Ubuntu x86_64
    Par sylbal dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 08/03/2005, 10h17
  5. PhpMyAdmin vs Mysql sous Ubuntu
    Par PiTiLeZarD dans le forum Installation
    Réponses: 11
    Dernier message: 12/01/2005, 22h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo