[SHELL](bash) debloquer une commande bloquan

Fermé
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 - 15 janv. 2003 à 19:55
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 - 17 janv. 2003 à 11:11
salut a tous...
mon soucis est le suivant:

dans un script shell, les commandes sont executées sequentiellment
or certaines commandes sont "bloquantes" car elles attendent un timeout ou autre..
les metre en tahce de fond ne sert a rien, cela met tout le script en tache de fond.

si quelqu'un connait une methode pour "sauter" a la commande suivante...

merci d'avance

.O No parachute? Wow! This is so cool!
(_)__
... Castor
A voir également:

15 réponses

Hallu,

Lorsque on exécute une commande en tâche de fond, le shell rend alors la main avant
la fin de la commande. Pour le faire, on ajoute un & à la fin de la commande.
Et normalement ca ne met pas ton script en tache de fond.
En effet toutes commandes lancées ouvrent un nouveau shell pour celles ci ,
et c'est ce shell qui est exécuté en tache de fond et non le shell père.
1
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
16 janv. 2003 à 09:26
essaie le script suivant:

#!/bin/sh
/sbin/shutdown -r 5&
echo "main rendue..."


resultat chez moi:


[root@alcor .authoscripts]#./arret.sh
Broadcast message from root (Thu Jan 16 09:16:36 2003):

The system is going DOWN for reboot in 5 minutes!



et je dois appuyer sur une touche .. a ce moment la il me rend la main en interactif, mais n'ecrit pas le "main rendue" de mon echo...

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Salut,

Tu essais de faire un shut down de ta machine.Donc le but est de tuer tous les process de ta machine.
C'est pour cela qui ne sert à rien de lancer cette commande en batch.
Avant de faire ce shut down daemons and killing processes un warning message apparait sur ton écran et c'est celui que tu as vu et il attend une confirmation .
Je ne suis un spécialiste du système unix en détail mais il ne sert à rien de reprendre la main après un shutdown.
0
M&M Messages postés 5057 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
16 janv. 2003 à 16:15
Je crois qu'on peut l'expliquer: l'instruction shudown reçoit son propre fork er court tout seul mais doit imprimer une ligne directement avant de se mettre ne sommeil er rendre la main pour le ligne echo.

Je te propose donc d'essayer
sleep 1; shutdown -r 5&
echo" ici"
là le job envoyé en tâche de fond va d'abord se suspendre une seconde et rendre la main pour la ligne echo, avant de se réveiller et lancer le shutdown 5

 :,§_ ç _
(@)=(@)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
16 janv. 2003 à 18:53
ah oui tiens je vais tenter ca merci m&m

haiti: oui le but "ici" est de faire un shutdown mais on pourrait imaginer tuot autre chose, comme par exemple au lieu d'un shutdown un script qui attend une reponse d'un autre p c ou je ne sais quoi de bloquant...

et dans mon cas precis le but est de afire savoir que je suis entre ne phase "shutdown dasn 5 minutes" a l'autre bout du reseau (mais en fait c bcp plus complique que ca ce que je veux faire :p)

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
16 janv. 2003 à 18:55
oui ben ca marche pas :((
il fait le sleep 1 PUIS il lance "shutdown -r 5&"

raaa ca m'enerveeee

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Jean-François Pillou Messages postés 18879 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
16 janv. 2003 à 19:06
Ce n'est peut-être pas ce que tu veux faire, mais il me semble que tu peux mettre une phrase à afficher en argument de la commande shutdown ! ;-)

à vérifier dans le man
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
16 janv. 2003 à 21:16
arf oui non en effet rien a voir :-)
le but n'est _pas_ en soi de faire qqch au shutdown (enfin la oui mais le "echo" ne mesers qua tester le rendationnement de main)

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Si tu veux prévenir que tu vas rebooter ta machine, je pense que la système envoi un message à tous les utilisateurs de cette machine lorsque tu fais un shutdown et pas seulement à Root.
Ca m'est déjà arrivé.
Je pense que la comande shutdown est particulière par rapport aux autres commandes.Puisqu'elle prévient tous les users je ne vois pas l'intérêt de faire un echo Msg derrière.

Par exemple si tu lances un script en arrière plan:

./script.sh&
commande1
commande2
...

Tu peux être sur que les commandes suivantes de ton script vont être exécutées, j'ai déjà essayé.

Si tu veux vraiment faire un echo derriére tu n'as qu'à lancer ton shutdown en différé par la commande at et tu fais ensuite ce que tu veux :
un echo
un mailx
etc ...
0
M&M Messages postés 5057 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
17 janv. 2003 à 02:26
castor, le comportement de ton shell script est ANORMAL !
Je ne sais pas sur quel vélo tu roule mais les bécanes PMDS, system V, AIX, HP-UX, NeXTstep, SunOS, Solaris, Linux que j'ai fréquentés n'avaient pas ce comportement.

Si c'est un problème de stream, tu peux toujours imprimer sur le stream2 du canaal d'erreur, il sera libre, lui, c'est sûr. Mais il me semble que ton "&" est malade.

Linux a une commande "wait" assez sophistiqué: elle permet d'attendre la fin d'une tâche de fond pour lancer la suite. A investiguer peut-être.

Moi je changerais de shell : Bourne, c-shell, T-shell, bash .. Le tien est foireux et ne suit pas la norme !

 :,§_ ç _
(@)=(@)
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
17 janv. 2003 à 08:50
mzerci les gars oiur votre aide..

pourtant ma conf est tou ce qu'il y a de plus classique: une mandrake 8.2 avec un bon vieux bash (GNU bash, version 2.05.1(1)-release (i586-mandrake-linux-gnu) )

c pour cela que je ne comprend pas...
Haiti: je sais que le shutdown "previens" les users loggés, mon but est de prevenir les machines du reseau sur lesquelles personne n'est loggé a ce moment precis...
en fait le pb est que mes becanes sont sur un onduleur qui ne gere qu'une seule machine...
et non je ne peux pas utiliser le soft client/serveur de l'onduleur le module serveur n'existe que pour windaube :(

mais je continue d'investiguer merci de vous prendre la tete avec moi c sympa..

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
M&M Messages postés 5057 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 3 décembre 2009 667
17 janv. 2003 à 09:06
Tu m'étonnes, je vais essayer l'aller sur un site avec ce mandrake. Tu n'as pas un autre shell dans /bin ?
 :,§_ ç _
(@)=(@)
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
17 janv. 2003 à 09:34
je va voir ca...
le pire c'est que ma machine de test ne sera pas du tout la meme que la prod, mais l ag pas le choix.... :-(


.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
17 janv. 2003 à 09:36
argh non quedalle :(
g bash, bash2 et sh, tous pointant sur le meme binaire :(

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 170
17 janv. 2003 à 11:11
bon ca se debloque.... g pas reussi a faire ce que je voulais alors je vais tenter de biaiser... je vou tiens au courant asi ca marche :-)

.O No parachute? Wow! This is so cool!
(_)__
... Castor
0