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

Administration système Discussion :

Faire un daemon


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut Faire un daemon
    Bonjour,

    J'ai développé une application pour un module embarqué avec busybox, je cherche a transformer mon programme, qui se lance pour le moment par ligne de commande, en daemon pour qu'il se lance au démarrage de linux.

    Si quelqu'un peut m'expliquer comment faire, je suppose que je doit quelque part configurer un fichier linux pour qu'il lance mon executable au démarrage. Par contre je ne sais pas si il faut modifier quelque chose dans le code de mon programme.


    Merci d'avance !

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Par défaut
    Mets le dans le inittab ou dans les répertoires /etc/rc.d/rcx.d/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Ok merci !

    Je n'ai pas lesrépertoires /etc/rc.d/rcx.d/ dans mon système embarqué par contre j'ai bien sûr l'initab.

    Voilà mon inittab
    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
    #
    # inittab
    #
    #  <ID>:<RUNLEVEL>:<ACTION>:<PROCESS>
    #
    # Possible actions are:
    #
    # 	sysinit
    #	respawn
    #	askfirst
    #	wait
    #	once
    #	restart
    #	ctrlaltdel
    #	shutdown
    #
    # This is run first except when booting in single-user mode.
    ::sysinit:/etc/init.d/rcS
     
    # /bin/sh invocations on selected ttys
    #
    # Start an "askfirst" shell on the console (whatever that may be)
    ::respawn:/sbin/inetd
    ::respawn:/sbin/thttpd -c /cgi-bin/
     
    # use agetty instead directly connecting sh to console, ttyS0 or ttyS1
    # to enable Ctrl-C and Ctrl-\
    #::respawn:/sbin/agetty /dev/ttyS0 /bin/sh -l
    #::respawn:/sbin/agetty /dev/ttyS1 /bin/sh -l
     
    #::respawn:-/bin/sh
     
    ## Start an "askfirst" shell on /dev/tty2-4
    #tty2::askfirst:-/bin/sh
    #tty3::askfirst:-/bin/sh
    #tty4::askfirst:-/bin/sh
     
    # Example of how to put a getty on a serial line (for a terminal)
    #
    #null::respawn:/sbin/getty -L ttyS0 38400 vt100
     
    # Stuff to do when restarting the init process
    #::restart:/sbin/init
     
    # Stuff to do before rebooting
    Pourrais tu m'expliquer le fonctionement du fichier ? Les "::sysinit:", "::respawn:", "null::respawn:" "tty2::askfirst:", "::restart:", ......

    Et comment mettre mon appli qui se trouvera par exemple dans "/bin".

  4. #4
    Membre chevronné
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Tu devrais avoir /etc/init.d car tu as la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::sysinit:/etc/init.d/rcS
    dans ton inittab. C'est ici que les scripts sont lancés au démarrage. Je ne connais pas busybox, mais su Debian par exemple pour lancer un programme au démarrage il faut :

    - Placer un script dans /etc/init.d/monscript
    - S'assurer qu'il soit executable (chmod +x)
    - Lancer en root : update-rc.d monscript defaults

    Pour un exemple de script tu peux regarder ce qui existe déjà, il faut faire un case sur l'argument, et gérer les cas : start, stop, restart. Eventuellement status si tu veux faire le pro
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par dbprog
    Tu devrais avoir /etc/init.d car tu as la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::sysinit:/etc/init.d/rcS
    dans ton inittab. C'est ici que les scripts sont lancés au démarrage. Je ne connais pas busybox, mais su Debian par exemple pour lancer un programme au démarrage il faut :

    - Placer un script dans /etc/init.d/monscript
    - S'assurer qu'il soit executable (chmod +x)
    - Lancer en root : update-rc.d monscript defaults

    Pour un exemple de script tu peux regarder ce qui existe déjà, il faut faire un case sur l'argument, et gérer les cas : start, stop, restart. Eventuellement status si tu veux faire le pro

    Oui effectivement je dois l'avoir puisque la ligne est présente dans le code. Pourtant j'ai regardé et ca n'y été pas, ca doit être en fichier caché, je regarderai ca lundi.

    Par contre j'au réussi a faire mon daemon, en modifiant tout simplement le fichier inittab. J'y ai ajouté la ligne suivante.

    ::respawn:/appli/mon-prog

    J'ai également du modifier l'un des fichier appellés lors de la création de l'image linux de mon module embarqué, afin de créer le répertoire appli dans le système et y copier mon programme.

  6. #6
    Membre chevronné
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Il n'y a pas de fichiers cachés sous Linux
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par dbprog
    Tu devrais avoir /etc/init.d car tu as la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::sysinit:/etc/init.d/rcS
    Bon alors effetivement j'ai bien un fichier "/etc/init.d/rcS" qui n'est pas en fichier caché, j'avais pas fait gaf car en premier lieu usf70 m'avait dit de regarder dans "/etc/rc.d/rcx.d/". Répertoire que je n'ai pas et j'avais pas fait gaf que par contre j'avais "/etc/init.d/rcS". Enfin rien de bien garve, je ferai plus attention la prochaine fois.

    Alors voici mon fichier rcS :
    #!/bin/sh

    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    export PATH

    echo "Mounting other filesystems ..."

    /bin/mount -a

    # tmp fs should be world-writeable and mount has no option umask=
    chmod 777 /ram

    # Local IP
    /sbin/ifconfig lo 127.0.0.1
    /sbin/route add -net 127.0.0.0 netmask 255.255.255.0 lo

    # read EEPROM and run scripts
    /sbin/eeprom -r /etc/init.d/eeprom.sh

    if [ -e /dev/misc/rtc ]; then
    echo "Setting system time"
    /sbin/hwclock --hctosys
    date
    fi
    Bon alors d'après d-jo, j'ai cru comprendre que la méthode que j'ai employé en modifiant inittab n'est pas la bonne. Dommage je trouvai que ca marcher bien, en plus la méthode respawn est assez sympa, car si mon appli devait pour quelconque raison s'arretter ou planter elleredémarre aussi tôt grâce a cette méthode.

    Alors apparement il faut plutôt que je modifie rcS, mais comment ? Quelqu'un pourrait t'il me montrer sur l'exemple que j'ai mis ci dessus.

  8. #8
    Membre chevronné
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Est-ce que tu as quelque chose dans /etc/init.d ? => ls -al /etc/init.d
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


Discussions similaires

  1. [transmission-daemon] comment fair epour savoir si les torrents sont morts
    Par mapmip dans le forum Logiciels Libres & Open Source
    Réponses: 0
    Dernier message: 13/05/2015, 18h55
  2. faire un daemon ?
    Par panthere noire dans le forum Débuter
    Réponses: 1
    Dernier message: 20/02/2010, 03h11
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 11h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 16h41

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