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

Debian Discussion :

Lancer un programme lors du boot


Sujet :

Debian

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut Lancer un programme lors du boot
    Bonjour,

    Je travaille actuellement sur un projet consistant à faire bouger un robot à distance par divers moyens. Il s'agit d'un robot "Rapiro" avec un raspberry pi tournant sous debian. Mon objectif immédiat est d'assurer l'envoi de messages depuis un PC extérieur jusqu'à l'arduino qui se trouve connecté au raspberry. Pour cela j'ai codé un très simple serveur en C qui reçoit des messages et les envoie à l'arduino via une connexion série. Ce serveur fonctionne sans aucun souci.

    Le problème c'est que je dois le lancer en me connectant au robot via SSH, j'aimerais que ce serveur se lance tout seul au démarrage du robot.

    Après quelques recherches, voici les manipulations effectuées:

    Ecrire le script bash suivant qui lance le serveur:

    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
    #!/bin/sh
     
    ### BEGIN INIT INFO
    # Provides:          pamplemousse
    # Required-Start:    
    # Required-Stop:     
    # Should-Start:      
    # Should-Stop:       
    # X-Start-Before:    
    # X-Stop-After:      
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # X-Interactive:     true
    # Short-Description: launches pamplemousse server.
    # Description:       UDP Server on port 7777 to receive arduino commands.
    ### END INIT INFO
     
    echo "pamplemousse_start executed." >> ~/pamplemousse/daemon_log.txt
     
    if [ $# -eq 1 ]; then
        case "$1" in
            start )
                ~/pamplemousse/pamplemousse 7777
                echo "pamplemousse started." >> ~/pamplemousse/daemon_log.txt;;
            stop )
                PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
                kill $PID
                echo "pamplemousse stopped." >> ~/pamplemousse/daemon_log.txt;;
            restart | force-reload )
                PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
                if [ -z $PID ]; then
                    echo "pamplemousse is not running."
                else
                    kill $PID
                    ~/pamplemousse/pamplemousse 7777
                echo "pamplemousse restarted." >> ~/pamplemousse/daemon_log.txt
                fi;;
            * )
                echo "pamplemousse_start misused:" $1 >> ~/pamplemousse/daemon_log.txt
        esac
    else
        echo "usage: $" $0 "[start/stop/restart/reload/force-reload]"
        echo "pamplemousse_start misused." >> ~/pamplemousse/daemon_log.txt
    fi
     
    echo "pamplemousse_start completely read." >> ~/pamplemousse/daemon_log.txt
    mettre ce script ("pamplemousse_start.sh") dans le répertoire /etc/init.d
    Le rendre éxecutable par un traditionnel chmod +x

    A ce moment j'ai fait des tests en éxecutant le script avec les arguments start et stop, il se comporte comme attendu, avec une trace d'éxecution dans le fichier daemon_log.txt.

    On en arrive à la création du "lien symbolique" (les guillemets ici indiquent que je ne sais absolument pas dans quoi je fous les pieds ...). Après plusieurs recherches, j'en suis venu à faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
    Selon ce site: https://www.debian-administration.or...me_with_Debian
    J'aurais dû obtenir une sortie ressemblant à peu près à ce machin:
    root@skx:~# update-rc.d blah defaults
    Adding system startup for /etc/init.d/blah ...
    /etc/rc0.d/K20blah -> ../init.d/blah
    /etc/rc1.d/K20blah -> ../init.d/blah
    /etc/rc6.d/K20blah -> ../init.d/blah
    /etc/rc2.d/S20blah -> ../init.d/blah
    /etc/rc3.d/S20blah -> ../init.d/blah
    /etc/rc4.d/S20blah -> ../init.d/blah
    /etc/rc5.d/S20blah -> ../init.d/blah

    Mais j'obtiens seulement ça:
    pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
    update-rc.d: using dependency based boot sequencing
    insserv: warning: script 'mathkernel' missing LSB tags and overrides

    J'ai essayé également en root, mais même résultat. J'ai essayé avec des scripts d'exemple fournis dans plusieurs tutoriels, toujours le même résultat.
    Et s'il est besoin de le préciser: quand je relance le robot, les scripts ne se lancent pas. Ou, dans le jargon: "putain mais pourquoi ça veut pas marcher cette merde ?!".

    Pouvez-vous m'aider svp ? Merci d'avance

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut
    Rebonjour. Je fais les questions ET les réponses finalement:

    Après quelques tests, il semblerait que mon script se lançait bien au démarrage, le seul souci c'est qu'au moment où il se lance, le "~" (home) ne peut pas encore être compris par le shell. Tout est rentré dans l'ordre en remplaçant les "~" par des "/home/pi" dans mon cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Registre] Lancer un programme au boot
    Par Blo0d4x3 dans le forum Débuter
    Réponses: 8
    Dernier message: 27/05/2015, 13h29
  2. Lancer programme utilisateur au boot de Linux
    Par asterogyre dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 27/05/2006, 12h11
  3. Structure de la RAM lors du boot
    Par Neo82 dans le forum Assembleur
    Réponses: 7
    Dernier message: 07/03/2003, 09h29
  4. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36
  5. Réponses: 8
    Dernier message: 05/06/2002, 11h55

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