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 :

Lancer une application depuis un script et fermer le script


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut Lancer une application depuis un script et fermer le script
    Bonjour à tous,

    j'ai essayé de trouver une réponse sur google mais après avoir visiter de nombreux sites (qui parfois ont 10 ou 15 ans), aucune solution ne fût trouvée.

    voici mon "simple" problème :
    mon script "commandes.sh" me permet de faciliter le lancement de certaines taches et applications.

    ex:
    appuyer sur "1" pour ouvrir rep de config de xxx
    appuyer sur "2" pour ouvrir fichier de config de zzz
    ...

    après le choix, l'appli s'ouvre mais la fenêtre du terminal reste ouverte en attendant que la commande lancée se termine.

    j'aimerais donc que la fenêtre du terminal se ferme après l’exécution de la commande, sans attendre la réponse de l'appli lancée.

    Je vous remercie d'avance pour votre aide.

    Alex

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    Il te faut désolidariser la commande lancée depuis le script de celui-ci. Pour cela ajoutes une esperluette en fin de ta commande. ne fois ceci fait, il te suffit d'arrêter ton script avec exit par exemple.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    bonjour chrtophe,

    si c'était si simple

    j'ai un peu de mal avec la logique du bash scripting, exemple:
    voici un bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if [ "$select" == "apache" ] ; then
    sudo pcmanfm "/etc/apache2" &
    sudo disown $1
    sleep 0.1
    fi
     
    exit 1
    si je choisi "apache", j'ouvre un explorateur dans fichiers dans le répertoire voulu (ici /etc/apache2 ) qui reste ouvert après la fermeture automatique du script et du terminal

    cette commande fonctionne mais indique une erreur :
    "sudo: disown*: commande introuvable"

    si j'enlève la ligne "sudo disown $1" , le script ferme aussi pcmanfm à la fin
    alors qu’apparemment la commande ne servait à rien

    pareil avec sleep, si je ne mets pas un délai, pcmanfm se ferme aussi à la fin du script.


    Pire, avec l'editeur de texte, cela ne fonctionne pas du tout alors que seul le programme exécuté change, le reste du code est identique...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if [ "$select" == "siteconf" ] ; then
    sudo leafpad "/home/pi/Desktop/www/001/config/settings.inc.php" &
    sudo disown $1
    sleep 0.1
    fi
     
    exit 1
    leafpad se ferme immédiatement dès que "exit 1" est appelé

    voila voila, pas si simple

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    J'ai fait le teste, et effectivement la fermeture du shell va fermer ses processus enfants.
    Pour éviter ceci ajoutes nohup devant la commande exemple :

    nohup sudo pcmanfm "/etc/apache2" &
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Merci chrtophe!

    effectivement, j'avais mal utilisé les commandes au début.
    finalement c'est assez simple

    j'ai recréé mon fichier afin que cela soit plus propre et fonctionnel.

    si cela peut être utile à quelqu'un qui visite ce forum, je le mets ici
    Il s'agit d'un menu de raccourcis pour éviter de taper les lignes de commandes à chaque fois et les oublis de sudo.
    Je rajoute les commandes au fur et à mesure de mes besoins, je sais qu'il peut être plus propre encore, mais ça me suffit pour l'instant.

    merci encore chrtophe pour ton aide

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    #!/bin/bash
     
    while :
    do
     
    clear
    echo "Liste des commandes"
    echo
    echo "r - Apache Reboot"
    echo "rl - Apache Reload configuration"
    echo "test - Apache Test configuration"
    echo "testvh - Apache Test VH configuration"
    echo
    echo "pma - Modifier config de phpmyadmin"
    echo "php - Modifier config PHP.INI"
    echo "siteconf - Modifier configuration connexion BDD (Settings.inc.ini) de Prestashop"
    echo
    echo "apache - Afficher répertoire Apache"
    echo "log - Afficher répertoire des logs Apache"
    echo "www - Afficher répertoire WWW"
    echo
    echo
    echo "q - Quitter"
    echo
     
    read -p "Entrer la commande à executer : " varselect
     
    case $varselect in
     
    "r")
    echo
    echo "Apache Reboot"
    sudo service apache2 restart
    read -p "Appuyer sur Entrée pour continuer" entree
    clear
    ;;
     
    "rl")
    echo
    echo "Apache Reload configuration"
    sudo systemctl reload apache2.service	
    read -p "Appuyer sur Entrée pour continuer" entree
    clear
    ;;
     
    "test")
    echo
    echo "Test config file"
    apache2ctl -t
    echo
    read -p "Appuyer sur Entrée pour continuer" entree
    clear
    ;;
     
    "testvh")
    echo
    echo "Test Virtual Hosts"
    sudo apache2ctl -t -D DUMP_VHOSTS
    echo
    read -p "Appuyer sur Entrée pour continuer" entree
    clear
    ;;
     
    "pma")
    nohup sudo leafpad "/etc/phpmyadmin/config.inc.php" &
    clear
    ;;
     
    "php")
    nohup sudo leafpad "/etc/php/7.0/cli/php.ini" &
    nohup sudo leafpad "/etc/php/7.0/apache2/php.ini" &
    clear
    ;;
     
    "siteconf")
    nohup sudo leafpad "/var/www/001/config/settings.inc.php" &
    clear
    ;;
     
    "apache")
    nohup sudo pcmanfm "/etc/apache2" &
    clear
    ;;
     
    "log")
    nohup sudo pcmanfm "/var/log/apache2" &
    clear
    ;;
     
    "www")
    nohup sudo pcmanfm "/var/www" &
    clear
    ;;
     
    "q")
    exit
    ;;
     
    esac
     
    done

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    puisque toutes les commandes à exécuter le sont sous sudo, c'est tout le script qui devrait être exécuté en sudo.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Comment lancer une application depuis un service ?
    Par bhf37 dans le forum Langage
    Réponses: 7
    Dernier message: 05/03/2009, 14h05
  2. Réponses: 3
    Dernier message: 31/08/2008, 16h33
  3. Lancer une application depuis une fenêtre gtk
    Par cyrilleG dans le forum GTK+ avec Python
    Réponses: 11
    Dernier message: 29/09/2007, 22h03
  4. Réponses: 9
    Dernier message: 11/01/2007, 21h23
  5. [VB.NET]Lancer une application depuis MonProg
    Par PM_calou dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2006, 11h42

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