Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2043 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [shell]stack de commandes?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell]stack de commandes?

n°503454
KevinThePr​oud
Insubmersible
Posté le 14-06-2004 à 10:15:29  profilanswer
 

Bonjour,
 
j'aimerai savoir si il existe une commande qui permet de gérer une pile de  commande à exécuter. Par exemple on exécute la première commande, quand celle-ci à finit de s'excuter la commande suivante dans la pile prend le relai...
Le but ici est de pouvoir rajouter ou enlever des entrées à la pile dynamiquement.

mood
Publicité
Posté le 14-06-2004 à 10:15:29  profilanswer
 

n°503481
la viper
Posté le 14-06-2004 à 10:57:53  profilanswer
 

le pipe :p

n°503483
serialclea​ner
Posté le 14-06-2004 à 11:00:40  profilanswer
 

une sorte de batch live ?


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°503487
KevinThePr​oud
Insubmersible
Posté le 14-06-2004 à 11:11:41  profilanswer
 


 
Il dit qu'il voit pas le lien.

n°503488
KevinThePr​oud
Insubmersible
Posté le 14-06-2004 à 11:11:54  profilanswer
 

serialcleaner a écrit :

une sorte de batch live ?


 
Oui c'est ça

n°503500
serialclea​ner
Posté le 14-06-2004 à 11:31:13  profilanswer
 


 
Je ne sais pas si les shells intègre ce genre de pile, je pense qu'il serait nécessaire de faire un tour sur les man de bash, csh, zsh(mon préféré). Toutes les fois où j'ai parcouru ces man je n'ai rien vu de semblables. En revanche il y a peut-être à creuser du coté de zsh car on peut définir des fonctions qui permettrait de faire ce que tu veux.


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°503517
serialclea​ner
Posté le 14-06-2004 à 12:38:35  profilanswer
 


Le truc le plus facile à faire serait d'utiliser un script qui scrute une la file d'attente des commandes dans un fichier toutes les 2 secondes environ.
Ensuite l'écriture dans cette file peut se faire (avec zsh, je ne customise que lui) en bindant une fonction sur un raccourci clavier qui prend la ligne de commande courante en l'envoie dans la file.
C'est pas du full-shell mais ça peut se faire facilement.


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°503531
cycojesus
Mèo Lười
Posté le 14-06-2004 à 13:20:40  profilanswer
 

commande 1 && commande 2 && commande 3 && ...
 
le && conditionne l'éxécution de la deuxième commande sur le succès de la première
 
EDIT : y'a aussi le ||
 
EDIT2 : man bash ligne 238


Message édité par cycojesus le 14-06-2004 à 13:23:03

---------------
Chết rồi ! ✍ ⌥⌘ http://github.com/gwenhael-le-moine/slackbuilds/
n°503544
KevinThePr​oud
Insubmersible
Posté le 14-06-2004 à 13:44:52  profilanswer
 

dynamiquement

n°503561
minusplus
Posté le 14-06-2004 à 14:07:36  profilanswer
 

faudrait faire un fifo, lancer un shell qui le scrute et qui exécute les commandes séquantiellement si il y en a. Après y'a plus qu'à écrire les comandes dans le fifo...
 
heu j'ai pas testé bien sûr hein... :o :D

mood
Publicité
Posté le 14-06-2004 à 14:07:36  profilanswer
 

n°503563
arsunik
ma tuxitude me beastifie
Posté le 14-06-2004 à 14:10:53  profilanswer
 

tu peux gèrer ça avec un tableau en bash, ou avec une seule variable (en séparant les commandes par des sauts de ligne par exemple, tu peux gérer cette variable avec sed par exemple).
ensuite, tu lances les commandes avec une boucle et des eval.
pour ce qui est de la modification de la pile pendant l'exécution de la boucle, je ne vois pas ce que tu veux faire exactement.
Tu peux interrompre le script à tout moment avec des signaux (man kill, help trap) ou bidouiller en lançant des processus fils avec des pipes et en lisant la valeur de retour avec $?

n°503598
serialclea​ner
Posté le 14-06-2004 à 14:50:46  profilanswer
 

minusplus a écrit :

faudrait faire un fifo, lancer un shell qui le scrute et qui exécute les commandes séquantiellement si il y en a. Après y'a plus qu'à écrire les comandes dans le fifo...
 
heu j'ai pas testé bien sûr hein... :o :D


 
Pas idiot le coup des FIFOs, à voir.


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°503789
sorg
trop sur HFR depuis 2001
Posté le 14-06-2004 à 18:58:00  profilanswer
 

Ben chez moi si je tape une commande pendant l'execution d'une autre , elle est executer à la fin.
 
exemple:
jhe fait un  
wget www.bidule.com/groslolo.zip
 
Là ca downloade pendant plusieurs minute.... et je tape avant la fin:
 
unzip groslolo.zip
 
et la commande  s'execute dès la fin du download.

n°504258
serialclea​ner
Posté le 15-06-2004 à 14:03:05  profilanswer
 

Voici un petit script :
 

#! /bin/sh
# A lancé en arrière plan et de préference avec une redirection de la sortie standard vers un fichier pour conserver les logs des processus
 
if ! test -e "$HOME/.FIFO-batch-live-input";
then
 echo "Création de $HOME/.FIFO-batch-live-input"
 mkfifo $HOME/.FIFO-batch-live-input
 if ! test -e "$HOME/.FIFO-batch-live-output";
 then
  echo "Création de $HOME/.FIFO-batch-live-output"
  #mkfifo $HOME/.FIFO-batch-live-output
  touch $HOME/.FIFO-batch-live-output
 else
  if ! test -p "$HOME/.FIFO-batch-live-output";
         then
                 echo "Ne peut pas mettre en place le tube nommé nécessaire : $HOME/.FIFO-batch-live-output"
                 exit 0
  fi
 fi
else
 if ! test -p "$HOME/.FIFO-batch-live-input";
 then
  echo "Ne peut pas mettre en place le tube nommé nécessaire : $HOME/.FIFO-batch-live-input"
  exit 0
 fi  
fi
while test -e /bin/bash;
do
 COMMAND=`cat $HOME/.FIFO-batch-live-input`
 BIN=$(echo $COMMAND | cut -d" " -f1)
 ARGS=$(echo $COMMAND | cut -d" " -f2-)
 export ID=$RANDOM
 if [ "$BIN" != "exit" ];
 then
  echo "= Commande : $COMMAND ID:$ID $(date "+%D-%H:%M:%S" )"
  echo "=== Sortie : ID:$ID"
  $(echo $COMMAND) | sed -r "s/(.*)/$ID:\1/"
  echo "=== Fin : $COMMAND {$?} ID:$ID $(date "+%D-%H:%M:%S" )"
  echo
  echo "$(date "+%D-%H:%M:%S" ) $COMMAND {$?}" >> $HOME/.FIFO-batch-live-output # bloquant si c'est un tube
 fi  
done


 
Pour lui envoyer des commandes :


echo "la commande" >> $HOME/.FIFO-batch-live-input


Message édité par serialcleaner le 15-06-2004 à 14:03:53

---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°504365
serialclea​ner
Posté le 15-06-2004 à 15:53:28  profilanswer
 

Petit problème détecté si la commande précédente n'a pas terminé alors l'envoi sur le tube input est bloquant.
Je vais changer ça.


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
n°505209
KevinThePr​oud
Insubmersible
Posté le 16-06-2004 à 20:45:04  profilanswer
 

Merci! [:dawacube]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [shell]stack de commandes?

 

Sujets relatifs
[Shell - Debian] LmSensorShell script et paramêtre
[Shell] Envoyer un mail[SHELL] récupérer l'espace libre d'une partition
execution des commandes unixtransparence fenetre shell sous debian
[Debian woody] Executer des commandes avant et apres apt-get upgrade[shell] substring
[SCRIPT SHELL] Convertion de date[script shell linux] demande d'aide
Plus de sujets relatifs à : [shell]stack de commandes?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR