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 :

Exécution automatique au démarrage via .sh et rc.local


Sujet :

Administration système

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut Exécution automatique au démarrage via .sh et rc.local
    Bonjour
    Je bosse sur un RPI, raspbian jessie
    je développe un dispositif complet (logiciel codé C++ + composants électronique externes)
    Une première version de l'appli n'était pas équipée d'écran, donc pas d'interface graphique
    Elle se lançait automatiquement en ayant crée un .sh sur mon bureau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /home/pi/dicartech/exec
    sudo ./Dic_v0.76
    appelé depuis le rc.local, dont voici la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #essai de mon script
    bash /home/pi/Desktop/dic.sh
    #fin
    exit 0
    Me deuxième version inclut un écran tactile, et une IHM graphique développée sur gtkmm
    Je veux procéder de la même façon pour la lancer automatiquement, mais cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /home/pi/dicartech/exec
    sudo ./dic_2_12
    • J'ai vérifié la syntaxe des noms de fichiers que j'apelle, en inversant les noms des deux appli, c'est seulement la non graphique qui démarre.
    • J'ai aussi testé mon script, en le lançant à la main depuis le terminal, l'appli graphique se lance correctement
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      bash /home/pi/Desktop/dic.sh
    • J'ai aussi tenté de repousser le lancement de la version graphique de 5S, au cas où elle soit lancée trop tôt dans le processue de démarrage du RPI, ça ne change rien.


    Je n'ai plus d'idée.

    Qu'est-ce qui peut clocher dans mon affaire?
    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par niconol Voir le message
    [CODE]#essai de mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bash /home/pi/Desktop/dic.sh
    #fin
    exit 0
    Me deuxième version inclut un écran tactile, et une IHM graphique développée sur gtkmm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /home/pi/dicartech/exec
    sudo ./dic_2_12
    C'est peut-être idiot mais dans le premier script, je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash /home/pi/Desktop/dic.sh
    et donc dic.sh n'est pas nécessairement avec des droits executatble
    Ceci pourrait expliquer que ne fonctionne pas

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    donc dic.sh n'est pas nécessairement avec des droits executatble
    je ne te comprend pas!

    dic.sh est un fichier de script, pas un exécutable




    dans les deux cas je lance l'appli en sudo

  4. #4
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Un script est considéré comme un exécutable s'il est lancé seul.
    demande à Bash de lire le contenu et d'exécuter les commandes.
    Si je lance ./monscript.sh le système le considère comme un exécutable si ces droits sont suffisants (700 par exemple)
    sudo signifie que le propriétaire qui lance cet exécutable est root (administrateur) ce qui peut être nécessaire à causes des commandes contenues dans le script.
    Donc devrait arranger cela
    si nécessaire, voir https://doc.ubuntu-fr.org/permissions

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    tu demandes de s'exécuter à un script qui démarre une interface graphique (gtk) à un moment où il n'y a pas d'interface graphique démarrée (X11).

    et, contrairement aux programmes exécutés en mode texte, qui peuvent s'exécuter en arrière-plan, les programmes requérant X11 nécessitent une identification.
    il est toute fois possible de configurer le Display Manager (GDM)pour permettre à un utilisateur donné d'accéder automatiquement au Window Manager (Gnome).

    par contre, les programmes "fenétrés" ne devraient pas être exécutés par root !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Michel,
    décidément, il y a quelque chose qui m'échappe, peux-tu reformuler ?

    J'ai réglé les droits . Le .sh est devenu double-cliquable pour son exécution, du moins il me semble qu'il ne l'était pas avant.
    J'ai donc les droits suffisants pour exécuter le sh, en double clic ou manuellement depuis le terminal.

    lorsque la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash /home/pi/Desktop/dic.sh
    est lancée au démarrage depuis rc.local, rien ne se passe, comme si effectivement je n'ai pas les droits d’accès.

    Je ne comprends pas pourquoi le comportement est différent. Les droits d’accès ne changent pourtant pas!

    J'ai modifié mon .sh ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sleep 20
    sudo gpicview ~/Desktop/splash.png
    avec bien entendu un splash.png sur mon bureau.
    le sleep 20 pour attendre le complet démarrage de la machine, merci N_BaH
    l'ouverture d'une image pour écarter le paramètre "mon appli est peut être foireuse"

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    il vaudrait donc mieux configurer le Window Manager (lequel ? Gnome ? KDE ?) pour qu'il exécute ton script après son démarrage.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Je suis quand même contrarié de ne pas comprendre le pourquoi et ne pas pouvoir utiliser le moyen simple qui fonctionnait jusqu'alors...

    mon bureau est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "${XDG_CURRENT_DESKTOP}"
    renvoie LXDE

    et
    renvoie
    donc visiblement, mon window manager est gnome.

    mais si je lance Desktop Session Settings, je constate que le gestionnaire de fenêtre est openbox-lxde

    donc je veux mdifier le script d'autostart d'openbox, une bonne doc ici https://doc.ubuntu-fr.org/openbox pour ubuntu j'ai imaginé que c'était valable pour raspbian
    au chapitre 6 , un éventuel pb est évoqué, dans lequel je me trouve bien entendu
    Configuration avancée

    Openbox possède trois principaux fichiers de configuration :

    rc.xml, où sont définis les paramètres de comportement d'Openbox et les raccourcis clavier,
    menu.xml, qui liste ce qui doit apparaître dans le menu principal (clic-droit),
    autostart, qui détermine les programmes et paramètres à lancer au démarrage.

    Ceux-ci prennent place dans le dossier ~/.config/openbox.

    Si le dossier ~/.config/openbox n'est pas créé après installation, ou si vous vous êtes complètement emmêlé les pinceaux dans votre configuration, les fichiers de configuration d'origine se trouvent dans /etc/xdg/openbox/. Dans ce cas, entrez les commandes suivantes dans un terminal:

    mkdir -p ~/.config/openbox/ # Pour créer le dossier s'il n'existe pas encore
    sudo cp /etc/xdg/openbox/* ~/.config/openbox/

    devrait tout remettre dans l'ordre.
    mais pas possible de créer un fichier commençant par un "." semble-t-il !!

    j'ai donc modifié l'autostart à l'endroit où il se trouve ( /etc/xdg/openbox/) pour ouverture d'une image gpicview, renommé en autostart.sh, rendu exécutable (et effectivement, si je l'exécute au double clic, l'image s'ouvre)
    Mais rien ne se passe au démarrage.

    L'autostart est-il cherché à être exécuté?
    Se trouve-t-il au bon endroit?
    Est-ce vraiment openbox-lxde mon gestionnaire de fenêtre ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    AU cas où, je précise que mon appli, lorsqu'elle est exécutée, plante à l'occasion, avec pour message d'erreur dans le terminal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gdk-WARNING **: dic:Fatal IO error 11 (Ressources temporairement non disponible) on X server :O.
    je me dis que X server et window manager étant intimement liés, c'est peut-être un indice intéressant sur mes problèmes

  10. #10
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    mais pas possible de créer un fichier commençant par un "." semble-t-il !!
    Dans le texte, je vois surtout un répertoire .config
    La commande crée un répertoire caché sans problème.
    Pour créer un fichier caché vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    touch .fichierCacheVide
    fonctionne .
    Pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Gdk-WARNING **: dic:Fatal IO error 11 (Ressources temporairement non disponible) on X server :O.
    On peut ouvrir plusieurs instances Xserver mais pas deux fois la même (Xserver :O) !
    Ceci pourrait vouloir dire que le serveur est déjà en fonction ou qu'aucun serveur n'est démarré

  11. #11
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Une idée plus simple (peut-être)
    Le script peut être lancé automatiquement par l'utilisateur pi à l’ouverture de sa session (ouverture automatique par défaut)
    Si c'est le cas, il suffit d'ajouter la commande à la fin du fichier .profile de l'utilisateur.
    pour tester, j'ai ajouté à la dernière ligne et le navigateur s'est ouvert en plein écran
    On peut aussi l'ajouter à la fin de .bashrc ce qui à l'avantage d'afficher l'environnement et puis de lancer le script (c'est probablement mieux)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Merci Michel,
    plein de choses intéressantes...

    toujours avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo gpicview ~/Desktop/splash.png
    • Oui, ok, répertoire, pas fichier, erreur de ma part. Merci pour la signification du "." en première place d'un répertoire, et maintenant je le vois bien. J'ai donc mis à jour mon fichier autostart.sh, dans ~/.config/ , qui est exécutable (testé), et rien de mieux. Mais peut-être dois-je décommenter certaines lignes de ce fichier pour choisir des config tool gnome ou xfce ... Pas mieux non plus.
    • SI je mets la commande dans .profile, elle est lancée très tôt, avant même que le bureau n’apparaisse, et elle est bloquante. Je dois la fermer pour voir enfin le bureau apparaître. Peut-être que je retiendrai cette solution, je ne sais pas encore si je veux accés aux autres applications en parallèles de l'appli que je développe.
    • SI je mets la commande dans .bashrc, elle est exécutée uniquement à l'ouverture d'un terminal

    Pour ce qui est du X server, vu que je suis complètement ignorant en la matière, je traite cela dans un autre topic https://www.developpez.net/forums/d1...a/#post9802723. J'avais tenté dans gtk, puisque mon pb est très lié à mon appli avec fenêtre développée sous gtk ,mais je n'ai pas de réponses

  13. #13
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Pour utiliser une image sur le bureau (j'ai testé avec chats.jpg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gpicview ~/Desktop/chats.jpg
    Si ce programme doit être ouvert en root (je me demande pourquoi ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gksudo gpicview ~/Desktop/chats.jpg
    Donc pour ton problème, c'est cette dernière qu'il faut mettre à la fin de .bashrc

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Y'a un truc qui tourne vraiment pas rond chez moi!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gpicview ~/Desktop/duck.jpg
    en fin du fichier n'ouvre pas le fichier duck.jpg que j'ai sur mon bureau !

    .bashrc n'est appelé qu'à l'ouverture d'un terminal. Si j'ouvre un terminal, mon canard apparait.

    et si je mets dans .profile, ça s'ouvre trop tôt (si je veux un bureau complet)

    le sudo c'est juste parce que au final, l'appli à lancer automatiquement au démarrage nécessite d'être en sudo (utilisation du hardware: USB et autre)

  15. #15
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    La solution ?

    Ouvrir /home/pi/.config/lxsession/LXDE-pi/autostart
    ajouter la ligne de commande précédée de @
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @gpicview /home/pi/Desktop/chats.jpg
    Attention, ~/ ne fonctionne pas, il faut le vrai chemin !
    Enregistrer et c'est bon !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Points : 53
    Points
    53
    Par défaut
    Je crois qu'on y est ...

    Je ne peux pas faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo /home/pi/.../mon_appli
    parce que mon appli charge son interface graphique depuis un .glade (fichier xml) du même dossier, dans lequel je ne suis pas

    je dois donc nécessairement passer par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd sudo /home/pi/.../
    sudo ./mon_appli
    donc un dic.sh contenant ces deux lignes

    appelé depuis le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/pi/.config/lxsession/LXDE-pi/autostart
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @sudo /home/pi/Desktop/dic.sh
    et j'y suis enfin, lancement de mon appli après apparition du bureau

    Merci beaucoup pour ton éclairage, ton partage et ta patience,
    plein d'infos intéressantes pour en arriver à une solution.

  17. #17
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    content que cela fonctionne!
    Merci aussi car grâce à toi je me suis enfin décidé à approfondir LXDE qui est un environnement léger mais que je n'utilise jamais et donc ... cercle vicieux, je ne le maîtrise pas car je ne l'utilise pas parce que je ne le maîtrise pas (un beau raisonnement récursif )
    A+

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/12/2008, 10h02
  2. Comment exécuter une API windows via php ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/03/2006, 10h19
  3. Problème d'exécution Acrobat et Word via IE
    Par licorne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/11/2005, 12h17
  4. Problème d'exécution d'un ActiveX via un Javascript
    Par xjinh dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2005, 14h08
  5. exécution automatique d'une macro
    Par faayy dans le forum Access
    Réponses: 12
    Dernier message: 15/06/2005, 14h52

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