Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2011, 10h10   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 5
Points : 3
Points : 3
Par défaut pipes shell tordus

Bonjour,

Je cherche à améliorer ma façon d'interagir avec des jobs sur une ferme de calcul (sous GE). Plus précisément, je suis amené à retenir (hold) un certain nombre de jobs puis à les relacher (release) et je cherche à tous les faire d'un seul coup.

en faisant
Code :
qstat | grep foo | cut -d" " -f1
j'obtiens le jobid de tous les jobs dont le nom contient foo.

Maintenant je voudrais balancer ça à la commande qhold dont la syntaxe est
Code :
qhold job_id1,job_id2,...,job_idi
Évidemment, les virgules me font ***er

Y a-t-il un moyen de "piper" ces deux choses pour retenir tous les jobs dont le nom contient foo dun seul coup?

Merci d'avance
daf64 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/07/2011, 10h17   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
pourquoi pas faire une boucle ? dans le genre
Code :
1
2
3
for i in $(qstat | grep foo | cut -d" " -f1)  ; do
qhold ${i}
done
en plus ça permet de dérouler d'autres actions si nécessaires où même de différencier les actions si besoin etc...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 14h10   #3
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Code :
qhold $(awk 'BEGIN{a=""} /foo/{a=a","$1} END{ print substr (a, 2)}')
?
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/07/2011, 15h48   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 5
Points : 3
Points : 3
Merci de vos réponse,

Je n'ai jamais utilisé awk, il faudra sans doute que je m'y mette un jour...
Cela dit, je n'avais simplement pas pensé à faire une boucle, c'est pas vriament un réflexe en lignes de commande mais c'est vrai que ça marche très bien!

Merci
daf64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h11.


 
 
 
 
Partenaires

Hébergement Web