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 POSIX Discussion :

problème d'appel d'un script shell pour tuer OOo [OS X] [Bash 3]


Sujet :

Shell et commandes POSIX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut problème d'appel d'un script shell pour tuer OOo
    Bonsoir,

    J'ai un problème pour tuer OpenOffice (3.0.1) sous MAC OS X (1.5.6) !

    J'ai mon petit programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String[] params = new String[2];
    params[0] = "/bin/sh";
    params[1] = "/chemin/fichier.sh";
    Process p = r.exec(params);
     
    InputStreamReader bis = new InputStreamReader(p.getErrorStream());
    BufferedReader br = new BufferedReader(bis);
     
    String line = "";
    while ((line = br.readLine()) != null)
    	System.out.println(line);
    mon fichier .sh (la commande fonctionne en mode terminal) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    kill -9 `ps -e | grep soffice | head -n 1 | sed 's/^ *//g' | sed 's/ .*//g'`
    et voici l'erreur que j'ai quand je récupère l'ErrorStream :

    kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]


    J'ai essayé plein de trucs et passé des heures sur les forums mais je n'ai pas trouvé d'où venait ce problème... à vous la parole.

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Bizarre j'ai essayé ton code sous linux, ça marche parfaitement.

    Je pense que tu devrais commencer par mettre dans ton shell:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    ps -e | grep soffice 1>&2
    pour voir si la commande ps fonctionne correctement. Normalement cela devrais t'afficher la ligne du processus soffice.bin

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Le problème vient probablement du ps.
    "ps -e" est une commande qui marche bien sous Linux, mais je ne suis pas sur qu'elle fonctionne de la même manière sous MacOs X qui est plutôt inspiré de BSD.
    Je pense que tu devrais essayer avec la syntaxe BSD: "ps ax"

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    Tout d'abord merci pour l'aide et l'attention.

    J'ai testé le "ps -e" et ca me donne bien un résultat sur l'InputStream par contre quand j'ajoute "| grep soffice" je n'ai rien dans l'Input et l'Error Stream ! ca peut venir du pipe alors...

    Ce que je n'ai pas dit et qui est d'autant plus bizarre c'est que le script à marché une fois ou deux

  5. #5
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    J'ai testé le "ps -e" et ca me donne bien un résultat sur l'InputStream par contre quand j'ajoute "| grep soffice" je n'ai rien dans l'Input et l'Error Stream ! ca peut venir du pipe alors...
    Y a il bien une ligne qui contient "soffice" dans la liste des process retournés par le ps -e?

    Le but du "| grep soffice" est justement de ne conserver que les lignes contenant le mot soffice.

  6. #6
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Après un petit coup de google, il semblerait bien que tu doive remplacer ps -e par ps -auxww sous MacOS X

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut
    Problème !

    En fait tu avais raison pour le ps -ax. Le ps -e me retournais en fait la première ligne du tableau (PID TTY ...) puis une partie des taches sur une autre ligne et tout attaché. Comme j'avais lancé OOo en dernier le processus soffice n'était pas dans la ligne... d'où l'erreur sur le kill qui faisait un kill dans le vide.

    NB : ps - auxww ne fonctionne pas. (ps: No user named 'xww')

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

Discussions similaires

  1. Script shell pour tester si un répertoire est vide ou pas
    Par Ito dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 04/10/2006, 17h44
  2. Script shell pour modifier plusieurs fichiers
    Par julio_097 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 03/10/2006, 12h41
  3. Script shell pour persister les variables exportées
    Par Giovanny Temgoua dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/10/2006, 09h07
  4. [GML] Scripts shell pour extraire des données d'Oracle
    Par diamonds dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/09/2006, 07h04
  5. [HTML & PERL] Appel d'un script shell
    Par mevardy dans le forum Web
    Réponses: 1
    Dernier message: 30/08/2006, 10h17

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