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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Commande en arrière plan

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande en arrière plan

n°1125775
Tuxerman12
Posté le 01-04-2009 à 20:19:57  profilanswer
 

Bonsoir,
J' ai un petit problème , dans un script je voudrais exécuter une commande du style :

 
Code :
  1. toto=`commande -argument`
 

Je dois la lancer en arrière plan et récupérer le pid pour la tuer si elle plante , toto et le résultat si la commande aboutit seront exploités dans le script) ,si vous pouviez m' aider pour la syntaxe , merci [:romf]

 

Un autre truc , dans un script , j' exécute une commande qui lance un processus rattaché à init ( un mount en fait ) , je ne sais pas comment récupérer ce pid de processus non plus  :sweat:

 

Merci d' avance pour le coup de main [:romf]

Message cité 1 fois
Message édité par Tuxerman12 le 01-04-2009 à 20:21:13
mood
Publicité
Posté le 01-04-2009 à 20:19:57  profilanswer
 

n°1125784
Gavrinis
Open your mind
Posté le 01-04-2009 à 21:35:41  profilanswer
 

Lancer en arrière plan : toto &
Récupérer le pid : pidof toto


Message édité par Gavrinis le 01-04-2009 à 21:35:52
n°1125806
sputnick
bip...bip...bip...bip...bi...b
Posté le 02-04-2009 à 00:11:35  profilanswer
 

Gavrinis, non, il y a une variable spéciale.
Il peux y avoir plusieurs process toto.
 

Code :
  1. plop &
  2. PidPlop=$!
  3. echo $PidPlop

n°1125873
Tuxerman12
Posté le 02-04-2009 à 12:11:30  profilanswer
 

Merci bien , je vais essayer ça , je vous tiens au courant .
De mémoire , il me semble avoir déjà essayé hier :

Code :
  1. toto=`commande -argument` &


Le shell m' a jeté , je crois :sweat: , je vais retenter  
 
Je m' inspire de : http://redflo.de/tiki-index.php?pa [...] t+function , pour faire un petit script qui tue ses processus s' ils plantent .

n°1125879
matafan
Posté le 02-04-2009 à 12:59:34  profilanswer
 

On ne peut lancer une commande en arrière plan entre back-quotes. D'ailleurs ça n'a aucun sens : lancer une commande en arrière plan ça veut dire continuer avant que la commande termine, alors que les backquotes supposent qu'on attende que la commande termine pour récupérer son output.

n°1125880
Tuxerman12
Posté le 02-04-2009 à 13:25:43  profilanswer
 

Merci pour cette explication détaillée :jap:  
Il y a une solution pour lancer `commande -argument` en arrière plan et récupérer le résultat dans une variable du shell parent ? [:noxauror]
La commande c' est juste un find sur un disque réseau , du coup elle peut planter .

n°1125881
matafan
Posté le 02-04-2009 à 13:31:54  profilanswer
 

Et tu ne penses pas que ton script devra, à un moment où à un autre, attendre que le find ait terminé pour faire quelque chose de sa sortie ? Dès lors, pourquoi lancer le find en arrière-plan ?

n°1125955
Tuxerman12
Posté le 02-04-2009 à 18:43:57  profilanswer
 

Pour l' instant , j' ai un truc qui ressemble à ça , pour compter le nombre de fichiers et leurs tailles sur un disque de serveur .

Code :
  1. toto=`find /mnt/dir/ -type f | wc -l`
  2. titi=`du -sh /mnt/dir/`
  3. echo "$toto files , $titi disk"


Si le find ou le du plante , ça n' arrive jamais à l' echo , je voudrais avec un timer tuer les process plantés et créer une sortie explicite .
 
J' ai pensé à autrechose :

Code :
  1. (echo "`find /mnt/dir/ -type f | wc -l` files , `du -sh /mnt/dir/` disk" ) &


 
C' est correct comme idée et syntaxe ?

n°1126617
Tuxerman12
Posté le 06-04-2009 à 15:35:14  profilanswer
 

Up  :sarcastic:

n°1126766
sputnick
bip...bip...bip...bip...bi...b
Posté le 07-04-2009 à 00:20:20  profilanswer
 

exemple :

Code :
  1. /usr/bin/timeout 3600 command; (($?==124)) && echo >&2 "command failed"


man 1 timeout
local/coreutils sous archlinux

mood
Publicité
Posté le 07-04-2009 à 00:20:20  profilanswer
 

n°1126842
Tuxerman12
Posté le 07-04-2009 à 10:45:12  profilanswer
 

Merci [:romf] , je vais tester ça de suite  :D
Après avoir lu le script que j' ai mentionné plus haut , avec le timer qui tourne en arrière plan , j' ai cru qu' il n' y avait pas de fonction timeout en bash  :whistle:
Par contre , dans mon script , j' ai une commande qui n' accepte pas le kill normal , je vais être obligé de lui envoyer un kill -9 si elle plante .


Message édité par Tuxerman12 le 07-04-2009 à 10:46:37
n°1126877
Tuxerman12
Posté le 07-04-2009 à 11:23:19  profilanswer
 

J' avais partiellement raison , il n' y a pas la commande timeout sur ma distrib (Opensuse).

n°1126952
gee
Bon ben hon
Posté le 07-04-2009 à 17:33:59  profilanswer
 

sur Debian ce n'est pas installe par defaut,mais c'est installable.


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°1126954
matafan
Posté le 07-04-2009 à 17:34:42  profilanswer
 

Il faut coreutils version 7 ou plus pour avoir la commande timeout. Elle a un flag -s pour spécifier le signal à utiliser pour tuer le processus.

n°1127260
Tuxerman12
Posté le 09-04-2009 à 11:35:38  profilanswer
 

Oui , j' ai vu ça merci  :D  
Sous opensuse ils en sont à la version 6.x je sais plus combien , elle date de 2006 , et il n' y a pas plus récent en précompilé .
La commande timeout est incluse dans un autre paquet précompile "netatalk" , je vais pouvoir jouer avec timeout  :D


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

  Commande en arrière plan

 

Sujets relatifs
pb avec commande ddCommande pour ecrire du texte sous X ?
[resolu] Executer une commande via ssh, sortir et laisser le process[Résolu] [dd] Comment écrire une chaine sur l'intégralité d'un disque?
commande bc dans awk[Shell] Remplacer dans un fichier en ligne de commande
Commande linuxnavigateur ligne de commande avec javascript
ligne de commande vlcPartimage coté serveur, bash: partimaged: command not found
Plus de sujets relatifs à : Commande en arrière plan


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