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 :

Lancer script au démarrage d'Ubuntu


Sujet :

Ubuntu

  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Lancer script au démarrage d'Ubuntu
    Bonjour,
    j'ai écrit un script shell comme indiqué dans ce post : http://forum.ubuntu-fr.org/viewtopic.php?id=85281

    Seulement celui-ci semble soit ne pas s'être exécuté, soit avoir échoué.
    Déjà, pour répondre à cette question, j'ai fait des echo dans mon script pour tracer, mais maintenant je ne sais pas comment consulter le log... Où sont supposés s'afficher les echo ?

    Merci d'avance.

    EDIT : le forum ubuntu semble être KO pour le moment, en gros j'ai mis mon script exécutable dans /etc/init.d/ et j'ai fait sudo update-rc.d monscript defaults

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 288
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Bonjour,
    j'ai écrit un script shell comme indiqué dans ce post : http://forum.ubuntu-fr.org/viewtopic.php?id=85281

    Seulement celui-ci semble soit ne pas s'être exécuté, soit avoir échoué.
    Déjà, pour répondre à cette question, j'ai fait des echo dans mon script pour tracer, mais maintenant je ne sais pas comment consulter le log... Où sont supposés s'afficher les echo ?

    Merci d'avance.

    EDIT : le forum ubuntu semble être KO pour le moment, en gros j'ai mis mon script exécutable dans /etc/init.d/ et j'ai fait sudo update-rc.d monscript defaults
    Tu peux toujours rediriger tes echos dans un fichier...

  3. #3
    Membre expérimenté
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Par défaut
    Si tu lances ton script après syslogd et si tu as la commande logger
    tu peux tracer directement dans les fichiers se trouvant sous /var/log/

    ça en fait des si

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Pour les logs, je suis d'accord avec montesq.

    Citation Envoyé par NiamorH
    j'ai mis mon script exécutable dans /etc/init.d/ et j'ai fait sudo update-rc.d monscript defaults
    argh, c'est mal !

    Il serait bon que nous voyons ton script, ou qu'on sache ce qu'il fait.

    A priori, il est préférable de paramétrer /etc/init.d/skeleton (en le renommant, et en le rendant exécutable, après, bien sûr), ensuite pour l'update-rc.d, ça a l'air bon, pourvu que les services dont dépend éventuellement ton script soient effectivement démarrés auparavant.

    Mais bon, ça dépend de ce que fait ton script...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Pas bête la redirection vers un fichier, je vais essayer, merci.

    ericduval je ne sais pas répondre à tes questions.

    N_BaH qu'est-ce qui est mal ? De le mettre à cet endroit ?
    Voici le script :
    Code shell : 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
    #!/bin/sh
     
    ######
    ## http://forum.ubuntu-fr.org/viewtopic.php?id=85281
    ######
     
    ######
    ## /etc/init.d/bootIC: démarre le service d'Intégration Continue
    ## Comprend:
    ## - le service Repository de Perforce sur le port 1666.
    ## - le service d'Integration Continue CruiseControl (DashBoard Guest: http://localhost:8080/dashboard Host: port 1668)
    ######
     
    VAR_JAVA_HOME=/usr/
    VAR_CC_HOME=/usr/local/bin/cruisecontrol-bin-2.8.2/
    VAR_CC_PATH=/usr/local/bin/cruisecontrol-bin-2.8.2/cruisecontrol.sh
     
    echo -n "Démarrage du script de boot du système d'Intégration Continue."
     
    # On vérifie tout d'abord que les programmes requis sont exécutable, sinon fin du script
    test -x java || exit 0
    test -x p4d || exit 0
    test -x $VAR_CC_PATH || exit 0
     
    echo -n "Vérification des exécutables terminée."
     
    # Suivant l'argument que l'on va ajouter après le nom du script, on va
    # définir différentes possibilités au script grâce à l'instruction 
    # case
    case "$1" in
        # si on tape # /etc/init.d/bootIC start, les instructions 
        # qui suivent vont être exécutées
        start)
            export P4PORT=1666
            p4d -r ~/p4 -d
            export JAVA_HOME=$VAR_JAVA_HOME
            cd $VAR_CC_HOME
            cruisecontrol.sh
            ;;
        # Fin des instructions si on met l'argument start après le nom  
        # du script
        # si on tape  /etc/init.d/bootIC stop, les 
        # instructions suivantes vont être exécutées
    ##    stop)
        # Fin des instructions si on met l'argument stop après le nom
        # du script si on tape /etc/init.d/bootIC restart, 
        # les instructions suivantes vont être exécutées
    ##    restart)
        # Si on tape 
        # /etc/init.d/bootIC alors le script affichera 
        # les différents arguments que l'on peut donner au script
        *)
            echo "Usage: /etc/init.d/bootIC start" >&2
            exit 1
            ;;
    esac
     
    exit 0
    ## Fin du script !

    D'ailleurs une question au passage, que signifie le >&2 dans : echo "Usage: /etc/init.d/bootIC start" >&2 ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 288
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Pas bête la redirection vers un fichier, je vais essayer, merci.
    de rien

    Citation Envoyé par NiamorH Voir le message
    D'ailleurs une question au passage, que signifie le >&2 dans : echo "Usage: /etc/init.d/bootIC start" >&2 ?
    C'est pour rediriger les informations générées par le démarrage du script vers la sortie d'erreur. Plus d'infos:
    http://www.tuteurs.ens.fr/unix/shell/entreesortie.html

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 635
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Citation Envoyé par NiamorH
    N_BaH qu'est-ce qui est mal ? De le mettre à cet endroit ?
    oui, les scripts devraient rester dans les répertoires utilisateurs. Pour faire propre, ils sont liés dans /usr/sbin. Il y a de nombreux avantage à adapter /etc/init.d/skeleton.

    Pour ton script, il me semble que le premier test ne permet pas de l'exécuter entièrement, car tu ne donnes pas à java son chemin absolu.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Salut.

    Alors j'ai un peu avancé. Voici mon script avec les modifications en rouge.

    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
    #!/bin/sh
    
    ######
    ## http://forum.ubuntu-fr.org/viewtopic.php?id=85281
    ######
    
    ######
    ## /etc/init.d/bootIC: démarre le service d'Intégration Continue
    ## Comprend:
    ## - le service Repository de Perforce sur le port 1666.
    ## - le service d'Integration Continue CruiseControl (DashBoard Guest: http://localhost:8080/dashboard Host: port 1668)
    ######
    
    VAR_JAVA_HOME=/usr/
    VAR_CC_HOME=/usr/local/bin/cruisecontrol-bin-2.8.2/
    VAR_CC_PATH=/usr/local/bin/cruisecontrol-bin-2.8.2/cruisecontrol.sh
    FICHIER_LOG=/home/romain/Bureau/log
    
    > $FICHIER_LOG
    echo " " >> $FICHIER_LOG
    echo " -------- Système d'Intégration Continue --------" >> $FICHIER_LOG
    echo " " >> $FICHIER_LOG
    
    # On vérifie tout d'abord que les programmes requis sont exécutable, sinon fin du script
    test -x /usr/bin/java || exit 0
    echo "java disponible" >> $FICHIER_LOG
    test -x /usr/local/bin/p4d || exit 0
    echo "p4d disponible" >> $FICHIER_LOG
    test -x $VAR_CC_PATH || exit 0
    echo "CruiseControl disponible" >> $FICHIER_LOG
    
    # Suivant l'argument que l'on va ajouter après le nom du script, on va
    # définir différentes possibilités au script grâce à l'instruction 
    # case
    case "$1" in
        # si on tape # /etc/init.d/bootIC start, les instructions 
        # qui suivent vont être exécutées
        start)
            echo " " >> $FICHIER_LOG
            echo " -------- Starting Perforce --------" >> $FICHIER_LOG
            echo " " >> $FICHIER_LOG
            export P4PORT=1666
            p4d -r ~/p4 -d >> $FICHIER_LOG
            export JAVA_HOME=$VAR_JAVA_HOME
            echo " " >> $FICHIER_LOG
            echo " -------- Starting CruiseControl --------" >> $FICHIER_LOG
            echo " " >> $FICHIER_LOG
            $VAR_CC_PATH >> $FICHIER_LOG
            ;;
        # Fin des instructions si on met l'argument start après le nom  
        # du script
        # si on tape  /etc/init.d/bootIC stop, les 
        # instructions suivantes vont être exécutées
    ##    stop)
        # Fin des instructions si on met l'argument stop après le nom
        # du script si on tape /etc/init.d/bootIC restart, 
        # les instructions suivantes vont être exécutées
    ##    restart)
        # Si on tape 
        # /etc/init.d/bootIC alors le script affichera 
        # les différents arguments que l'on peut donner au script
        *)
            echo "Usage: /etc/init.d/bootIC start" >&2
            exit 1
            ;;
    esac
    
    exit 0
    ## Fin du script !
    Au démarrage d'ubuntu, j'ai bien un fichier log sur mon bureau, nickel.
    Par contre mes services ne sont pas disponibles... Que ce soit Perforce ou CruiseControl.

    Dans mon log, Perforce semble s'être correctement lancé, mais CruiseControl ne cherche pas son fichier de config au bon endroit :
    -------- Système d'Intégration Continue --------

    java disponible
    p4d disponible
    CruiseControl disponible

    -------- Starting Perforce --------

    Perforce Server starting...

    -------- Starting CruiseControl --------

    Using Cruise Control at /usr/local/bin/cruisecontrol-bin-2.8.2
    (...)
    [cc]nov.-10 19:10:40 Main - Config file not found: /home/romain/config.xml

    Usage:

    Starts a continuous integration loop

    cruisecontrol [options]
    J'ai essayé de rajouter cd $VAR_CC_HOME avant le lancement de CruiseControl.sh (ça marche bien quand je le fait sur la console, mais dans un script, ça marche beaucoup moins bien...).

    L'erreur pour CruiseControl n'explique pas le fait que le service Perforce ne soit pas lancé... Des idées ?

    Merci!

  9. #9
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    up! Je n'ai toujours pas trouvé pourquoi mes services n'étaient pas lancés.

Discussions similaires

  1. Lancer un script au démarrage de CentOS
    Par yimson dans le forum RedHat / CentOS / Fedora
    Réponses: 10
    Dernier message: 26/10/2013, 11h24
  2. (opensolaris) lancer un script au démarrage
    Par olivier57b dans le forum Solaris
    Réponses: 1
    Dernier message: 23/06/2010, 15h36
  3. Lancer plusieurs scripts au démarrage
    Par ricardcoca dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/12/2009, 23h39
  4. Lancer un script au démarrage d'une machine
    Par publicStaticVoidMain dans le forum Administration système
    Réponses: 3
    Dernier message: 18/07/2009, 16h20
  5. Ubuntu, gestion des scripts de démarrage
    Par kromartien dans le forum Ubuntu
    Réponses: 4
    Dernier message: 28/02/2008, 14h14

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