Bonjour,
J'ai un peogramme java qui est lancé a partir d'un script schell. Je voudrai savoir si quelqu'un a un exemple shell pour mon programme ne peut pas etre exécuté dans le cas où il tourne encore ?
Merci
Version imprimable
Bonjour,
J'ai un peogramme java qui est lancé a partir d'un script schell. Je voudrai savoir si quelqu'un a un exemple shell pour mon programme ne peut pas etre exécuté dans le cas où il tourne encore ?
Merci
Bonjour air75,
...Code:
1
2
3
4 [ -n "$(pidof prog_java)" ] && { echo "prog_java est déjà en cours d'exécution... Je sors." exit } #|| echo OK
?
Bonjour,
dans mon batch je lance ma classe java a partir de la commande :
lance_java nomDeClasse
est ce que ça ca marche ?
merciCode:
1
2
3
4 [ -n "$(pidof nomDeClasse"]&&{ exit } lance_java nomDeClasse
On recommence depuis le début, parce que je ne connais pas du tout java :
tu as un script shell (lance_java), qui accepte un paramètre, et qui lance un programme java (NomdeClasse) ?
pour vérifier, lance ton programme java, et dans une autre console (pour faire simple) tape pidof NomdeClasse
--
PS:
respecte les espaces, et
:tagcode:
merci
Bonsoir,
J'ai un début de solution, mais j'ai encore un problème. Lorsque je lance une application en background, je le fais de la manière suivante:
Et j'ai en retour quelque chose comme:Code:<application> &
Cependant, je n'arrive pas à capturer cette ligne par stdout ou stderr. J'ai l'impression que la ligne vient du subshell. Comment la récupérer avec un code du genre:Code:[1] 3261
Ensuite, le code pour n'avoir qu'une seule application lancée sur le système est assez simple, mais il me faut récupérer le pid d'abord.Code:var=$(<application> &)
$! Se transforme en PID de la commande (asynchrone) exécutée en arrière-plan le plus récemment.
Ha, c'est simple donc! Merci N_BaH.
Voici un premier jet. Je devrais mieux vérifier chaque étape, je verrai si j'ai assez de temps plus tard.
C'est pas testé (et je fais rarement du code fonctionnel la première fois)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/bin/bash className="$1" classFile="/tmp/$1.pid" if [[ -r $classFile ]] then classPid=$(cat "$classFile") if ps -p $classPid | tail -1 | grep -q $className then echo "ERROR: $className already running (pid: $classPid)" >&2 exit 1 fi fi java $className echo $! > $classFile