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

Shell et commandes GNU Discussion :

Exécution de script incomplète au démarrage


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Par défaut Exécution de script incomplète au démarrage
    Bonsoir,
    J'ai un petit script que je veux exécuter au démarrage de la machine, bien qu'il ne s'exécute qu'une fois, je l'ai traité comme un service. (ce script lance une petite application java de mise à l'heure sur un équipement qui ne possède pas d'horloge sauvegardée).
    Le script /etc/init.d/horloge
    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
        DAEMON="/opt/jdk1.7.0_60/bin/java"
        DAEMON_OPT="-jar /usr/local/lib/horloge.jar"  # fichier à exécuter
        NAME="horloge.jar" # Nom du programme
        PIDFILE=/var/run/$NAME.pid
     
        PATH="/sbin:/bin:/usr/sbin:/usr/bin"
        export JAVA_HOME=/opt/jdk1.7.0_60
        export PATH=${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin
     
        test -e $DAEMON || exit 0
     
        . /lib/init/vars.sh
        . /lib/lsb/init-functions
     
        start_d () {
                log_daemon_msg "Start $NAME Daemon"
    	    start-stop-daemon --make-pidfile --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPT
        }
     
    ..........
    et les liens symboliques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@ubuntu:/home/hubert# update-rc.d horloge defaults
    Adding system startup for /etc/init.d/horloge ...
       /etc/rc0.d/K20horloge -> ../init.d/horloge
       /etc/rc1.d/K20horloge -> ../init.d/horloge
       /etc/rc6.d/K20horloge -> ../init.d/horloge
       /etc/rc2.d/S20horloge -> ../init.d/horloge
       /etc/rc3.d/S20horloge -> ../init.d/horloge
       /etc/rc4.d/S20horloge -> ../init.d/horloge
       /etc/rc5.d/S20horloge -> ../init.d/horloge
    Si j'exécute ce script en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    root@ubuntu:/home/hubert# date
    Tue Jan 10 12:45:17 CET 2017
    root@ubuntu:/home/hubert# /etc/init.d/horloge start
     * Start horloge.jar Daemon                                                                                                                     root@ubuntu:/home/hubert# date
    Fri Jan 20 21:22:35 CET 2017
    J'ai bien une mise à l'heure du système; par contre lors d'un reboot si je passe bien dans le script (le fichier /run/horloge.jar.pid est créé), je n'ai pas de mise à l'heure. Comme si il y avait un problème sur le programme java : variables d'environnement ou autre?
    Des pistes à explorer?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    pourquoi faire ça en java ?
    pourquoi ne pas installer un service ntpd ?
    pourquoi ne pas appeler ntpdate depuis une crontab root avec @reboot en tant que paramètre temps?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Par défaut
    Bonjour,
    Citation Envoyé par N_BaH
    pourquoi faire ça en java ?
    Parce que j'ai passé près d'une journée à faire fonctionner ntpdate avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    root@ubuntu:/home/hubert# ntpdate ntp.ubuntu.com
    ntpdate: relocation error: ntpdate: symbol CRYPTO_memcmp, version OPENSSL_1.0.0 not defined in file libcrypto.so.1.0.0 with link time reference
    et comme je ne suis pas un spécialiste des entrailles du système, j'ai laissé tomber.
    J'ai OPENSSL_1.0.1 d'installé, et que je n'ai pas réussi à résoudre ce problème après divers essais.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    ta version d'Ubuntu est-elle encore sous initV ? depuis quelques temps Ubuntu utilise Systemd pour gérer le démarrage.

    tu as une trace du démarrage de ton programme java : un log ? un fichier témoin sous /tmp ?...
    qui atteste de sa non-exécution complète.

    tu as essayé de réinstaller ntpdate ?
    tu as fait un dist-upgrade ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Par défaut
    Merci pour la réponse.
    Citation Envoyé par N_BaH
    ta version d'Ubuntu est-elle encore sous initV ?
    Oui, c'est un système monocarte (pcDuino) avec CPU ARM.
    Citation Envoyé par N_BaH
    tu as une trace du démarrage de ton programme java : un log ?
    Non, comme celà fonctionnait en ligne de commande, j'ai supprimé les logs; il faudra les remettre
    Citation Envoyé par N_BaH
    tu as essayé de réinstaller ntpdate ?
    Oui, même problème.
    Citation Envoyé par N_BaH
    tu as fait un dist-upgrade ?
    Sans doute! mais pas habitué de cette distribution, il faudra que je vérifie.

    Système inaccessible depuis ce matin : équipement sité en "pleine nature" avec accès ADSL situé derrière un routeur Dlink. Pour une raison inconnue la connexion (http et ssh) tombe quelques temps puis revient. Pas de logs attestant un redémarrage du système sur activation du WatchDog -en phase d'étude: vérification périodique de la liaison avec un ping vers l'extérieur, en plus du WatchDog matériel-.

    @ jlliagre
    Dès que j'ai récupéré la connexion, je tente ce paramètre. Merci.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Par défaut
    Bjr,
    Ayant récupéré la connexion sur le système (pb du vraisemblament au routeur Dlink) j'ai pu modifier le script avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DAEMON_OPT="-Djava.awt.headless=true -jar /usr/local/lib/horloge.jar"
    Le problème persiste.

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par hapalemur Voir le message
    J'ai bien une mise à l'heure du système; par contre lors d'un reboot si je passe bien dans le script (le fichier /run/horloge.jar.pid est créé), je n'ai pas de mise à l'heure. Comme si il y avait un problème sur le programme java : variables d'environnement ou autre?
    Des pistes à explorer?
    La cause la plus probable est que ton programme s'attend à avoir un environnement graphique à sa disposition, un serveur X11 via la variable DISPLAY.

    Tu peux essayer de dire à la JVM de s'en passer, mais il n'est pas garanti que l'appli java sois d'accord:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DAEMON_OPT="-Djava.awt.headless=true -jar /usr/local/lib/horloge.jar"

Discussions similaires

  1. exécuter un script Perl au démarrage de WampServer
    Par tdloic dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 03/06/2014, 17h59
  2. Exécuter un script à la fin du démarrage ?
    Par kedare dans le forum Administration système
    Réponses: 6
    Dernier message: 18/04/2008, 12h40
  3. [FLASH MX2004] Exécution de script PHP
    Par dleu dans le forum Flash
    Réponses: 2
    Dernier message: 30/03/2005, 19h10
  4. Réponses: 1
    Dernier message: 23/02/2005, 11h23
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

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