hppp a écrit :
et si je fais un killall -9 mysql2300 ? c'est pas la solution?
|
Euh.... le kill ne fonctionne pas tout à fait comme ça : il te faut de toute façon le numéro du processus que tu veux flinguer :
NAME
kill - terminate or signal processes
SYNOPSIS
/usr/bin/kill -s signal_name pid...
/usr/bin/kill -l [exit_status]
/usr/bin/kill [-signal_name] pid...
/usr/bin/kill [-signal_number] pid...
Donc il s'agit de trouver le numéro du processus que tu veux arrêter. Deux solutions : prévenir ou guérir.
Prévenir : un peu comme l'a justement suggéré Couak, encapsuler l'appel à ton binaire et buter ton processus après un délai X, avec un truc de ce genre :
Code :
- #!/bin/ksh
- /usr/local/bin/mysql2300 &
- PID_mysql2300=$!
- sleep 270 &# ton delai en secondes
- wait $!
- kill -9 ${PID_mysql2300} 2>&- # ferme la sortie des erreurs pour éviter de polluer la console dans le cas ou ton mysql2300 s'estt arrêté avant le kill
- exit 0
|
Attention, mon petit machin ci dessus ne te rend pas la main après le wait, il s'agit d'un bricolage vite fait à main levée.
Donc vois déjà si ce petit bidule fait ce que tu veux ? Y aura toujours moyen de l'améliorer après.
Sinon guérir : retrouver le PID de tes processus travaillant le binaire "mysql2300" et les tuer un par un à la main, avec un autre truc de ce genre :
Code :
- ps -e | grep mysql2300
|
ça, ça te permet de ne récupérer que les PID de tes binaires mysql2300
Après soit tu les tues à la main, soit tu fais une boucle (mais attention, tu as intérêt à vérifier le résultat du ps avant de lancer la boucle, sinon gare aux mauvaises surprises !!!)
Code :
- for PID in $( ps -e | grep mysql2300 | awk '{print $1;}' ); do kill -9 ${PID} 2>&-; done
|
Je redis, attention à cette commande, vérifie le résultat du ps avant de la lancer.
Voili voilouh
---------------
En programmation, quand t'as un problème et qu'il n'y a que deux solutions valides, seule la troisième fonctionne !