[SHELL](bash) debloquer une commande bloquan
Castor
Messages postés
17881
Statut
Modérateur
-
Castor Messages postés 17881 Statut Modérateur -
Castor Messages postés 17881 Statut Modérateur -
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
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:
- [SHELL](bash) debloquer une commande bloquan
- Invite de commande - Guide
- Classic shell - Télécharger - Personnalisation
- Comment débloquer un téléphone - Guide
- Commande terminal mac - Guide
- Débloquer code puk gratuit - Guide
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.
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.
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
#!/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
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.
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.
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
:,§_ ç _
(@)=(@)
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
:,§_ ç _
(@)=(@)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
il fait le sleep 1 PUIS il lance "shutdown -r 5&"
raaa ca m'enerveeee
.O No parachute? Wow! This is so cool!
(_)__... Castor
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
à vérifier dans le man
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
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
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 ...
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 ...
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 !
:,§_ ç _
(@)=(@)
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 !
:,§_ ç _
(@)=(@)
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
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
Tu m'étonnes, je vais essayer l'aller sur un site avec ce mandrake. Tu n'as pas un autre shell dans /bin ?
:,§_ ç _
(@)=(@)
:,§_ ç _
(@)=(@)
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
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