Script Shell
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Script Shell



  1. #1
    Sorye-ge-ton

    Script Shell


    ------

    Bonjour,

    Je cherche a executer en serie 2 commandes un certains nombre de fois et parallelement , voici mon code:


    #!/bin/bash
    for (( i=1000000; $i>0; i-- ))
    do
    (commande1 ; commande2)&
    done

    J'aimerais votre avis la dessus car ca n'a pas l'air de marcher
    ma commande1 creer un fichier et la 2eme le supprime;sachant que je le fais un grand nombre de fois il est preferable de supprimer avant de creer un autre fichier.
    Je cherche a le faire en parallèle car le but est de faire des tests de performance avec des gpu

    -----

  2. #2
    lou_ibmix_xi

    Re : Script Shell

    J'aimerais votre avis la dessus car ca n'a pas l'air de marcher
    Je ne suis pas un pro de bash, mais je n'ai jamais vu de boucle "for" comme ça, enfin si mais en C...
    Code:
    for i in `seq 1 100`; do echo "$i"; done
    est une possibilité.

    Code:
    Je cherche a le faire en parallèle car le but est de faire des tests de performance avec des gpu
    "xargs" avec l'option '-P', mais le shell va lancer tes commandes dans des processus parallèles, ce qui n'est pas forcément un lancement sur plusieurs coeurs différents, et encore moins sur différent GPU, ou alors quelque chose m'échappe.

  3. #3
    Sorye-ge-ton

    Re : Script Shell

    Bonjour,

    Merci de votre réponse

    Oui la boucle for est assez dépaysante pour du shell (je n'avais pas fait ca au debut et on est pas obligé de faire ca mais il y a une petite histoire derrière ) mais elle marche, le problème ne vient pas de la
    N'etant pas un expert en shell, j'ai essayé de faire en sorte de créer des instances de (commande1+commande2) qui se créent en parallèles avec dans chaque instance l’exécution de la commande1 suivit de la commande2
    Le problème est que des fois je me retrouve avec pleins de fichiers sur ma machine ,c'est a dire pleins d'instances de (commande1+commande2) executé a moitié ca semble possible que de nouvelles instances de commande1 soient créér pendant que les anciennes n'ont pas fini de faire commande2 mais ca me parait tout de meme étrange
    Je suis aussi dubitatif quand au fait que mon shell ne s arrette pas de lui meme, je suis obligé de faire un ctr+z sinon l'ecran reste figé sur les dernières choses qu'il a noté.
    Le script semble faire son travail mais j'aimerais etre rassuré quand à la syntaxe utilisé,je ne sais pas si c'est censé faire ce que je veux.
    Je ne sais pas si je suis sur le bon forum ou autre, je suis ouvert a toute autres propositions

  4. #4
    pm42

    Re : Script Shell

    Citation Envoyé par Sorye-ge-ton Voir le message
    ié ca semble possible que de nouvelles instances de commande1 soient créér pendant que les anciennes n'ont pas fini de faire commande2 mais ca me parait tout de meme étrange
    Cela ne me semble pas étrange du tout. Tu lances 1000000 de commande1 et pour chacune d'elle, commande2 quand elle est finie.
    Tu vas donc avoir plein de commande1 qui vont se lancer, puis au fur et à mesure qu'elles se terminent, des commande2 qui arrivent...

    Quand au shell qui ne se termine pas, tu demandes à lancer 1000000 de process... Cela met probablement ta machine à genoux parce qu'elle ne peut pas en lancer autant simultanément et elle attend donc que certains soient finis pour lancer les autres. Et donc ton shell attend aussi.

  5. A voir en vidéo sur Futura
  6. #5
    lou_ibmix_xi

    Re : Script Shell

    je suis obligé de faire un ctr+z
    Attention ça c'est pour faire faire une pause au processus "foreground", il n'est pas arrêté, c'est ctrl+c pour tuer un processus (kill -9)

  7. #6
    Sorye-ge-ton

    Re : Script Shell

    Ah ça peut aider lou_ibmix_xi merci ! disons que quand je fais ctr+c dans mon shell des fois il ne se passe rien

    D'accord donc en théorie si je laisse mon Shell tourner il devrait se débloquer au bout d'un moment ?
    Donc le problème de "freeze" du shell vient du fait que le script est gourmand plus que du fait qu'il y a une erreur dedans ?

  8. #7
    pm42

    Re : Script Shell

    Non, le problème vient du fait qu'il est aberrant de lancer autant de process simultanément.

  9. #8
    Sorye-ge-ton

    Re : Script Shell

    Disons que le traitement se finissait en 1mn avec 100.000 instances (bon apres 1mn avant le freeze)
    Je veux bien croire que la machine souffre avec ce traitement mais je ne suis pas sur qu'attendre débloque la situation: si je fais ls apres le freeze(dans une autre console), je n'ai plus aucun fichiers créer precedement dans mon repertoire donc ils ont tous été supprimés; si ils ont tous été supprimés alors pourquoi la machine souffre ?
    De plus avec l'aide d'un autre script (cette fois de qualité professionnel ) j'analyse l'utilisation du cpu et il tombe a 0% apres 1mn
    Apres je tiens a préciser que je ne fais pas ce traitement sur un ordinateur personnel mais sur un serveur

  10. #9
    pm42

    Re : Script Shell

    Je n'ai pas accès à ta machine et je ne peux pas analyser. Donc tu peux continuer à vouloir lancer plein de process en background jusqu'à ce que ça freeze. Ca marchera peut-être

  11. #10
    Sorye-ge-ton

    Re : Script Shell

    On devient raisonable a partir de combien de process en background ?

    J'ai essayé avec une boucle sur 500 et j'ai le meme freeze donc je ne sais pas si ca vient de la

  12. #11
    polo974

    Re : Script Shell

    Citation Envoyé par Sorye-ge-ton Voir le message
    ...
    De plus avec l'aide d'un autre script (cette fois de qualité professionnel ) j'analyse l'utilisation du cpu et il tombe a 0% apres 1mn
    Apres je tiens a préciser que je ne fais pas ce traitement sur un ordinateur personnel mais sur un serveur
    0% de cpu, c'est normal quand tu pars en swap...
    Jusqu'ici tout va bien...

  13. #12
    Sorye-ge-ton

    Re : Script Shell

    Quand tu pars en swap ?

    Désolé si ce que je vous raconte vous parait aberrant ...

  14. #13
    lou_ibmix_xi

    Re : Script Shell

    Citation Envoyé par Sorye-ge-ton Voir le message
    Quand tu pars en swap ?

    Désolé si ce que je vous raconte vous parait aberrant ...
    Si ta machine n'a pas assez de mémoire vive, elle utilise une zone du disque-dur comme mémoire vive, mais comme un dd est 1000x plus lent d'accès que la RAM (voir plus), la machine est extrêmement lente, et la CPU n'a que peu de données (qu'il faut aller chercher sur le DD plutôt qu'en RAM) du coup elle n'est pas sollicité, par contre "free" et "iostat" te diront si le serveur a swappé.

  15. #14
    pm42

    Re : Script Shell

    Si tu as "top" sur ta machine, cela te donne aussi une idée de ce qu'elle fait. Une copie d'écran nous aiderait.

  16. #15
    Sorye-ge-ton

    Re : Script Shell

    Oui des captures d'ecran pourrait aider !

    top1.jpg voila ce que donne le top quand mon script est en cours(script3.sh), à noter que je travail avec putty sur une machine distante qui est en rhel6

    Commande1 consiste a utiliser ffmpeg pour réaliser un transcodage et commande2 consiste a supprimer le fichier créer

    freezeFin.jpg et voila le top au moment du freeze. Le swap n'a pas l'air utilisé et le script n'apparait meme plus dans top mais je ne recupère pas la main dans le shell

    Juste pour savoir si c'est suspect que je ne recupère pas la main ou si ca arrive

  17. #16
    lou_ibmix_xi

    Re : Script Shell

    Juste pour savoir si c'est suspect que je ne recupère pas la main ou si ca arrive
    Non ce n'est à priori pas normal. Je penserais plutôt à commande1 ou commande2 qui bloque(nt). Pour t'en assurer tu pourrais remplacer commande1 par une bête création de fichier, et commande2 par l'effacement dudit fichier, ainsi si ça bloque toujours c'est que le problème vient du scripts shell, sinon c'est bien une de tes commandes.

  18. #17
    pm42

    Re : Script Shell

    Citation Envoyé par Sorye-ge-ton Voir le message
    Oui des captures d'ecran pourrait aider !
    J'ai regardé et c'est tout sauf clair.
    Tu peux mettre un
    echo $i
    dans ton script avant le lancement de ton process ?
    Et voir à quelle valeur ça freeze ?

  19. #18
    Sorye-ge-ton

    Re : Script Shell

    j ai fais un test sur une boucle de 500 iterations (boucle qui décrémente)
    avec
    (commande1;commande2;echo $i)

    Pièce jointe 287476

    la derniere valeur de i semble être 3 ce qui veut dire que le script plante a la toute fin, mais pourquoi n'arrive t'il pas a refaire ce qu'il a déjà fait pleins de fois ?
    Il n'y avais pas de fichiers créer lors du ls

    Par contre ca semble assez aléatoire : en réessayant sur une boucle plus importante je me retrouve une fois a planter au tout debut withI1000000Tot.jpg
    et une fois ou il m a rendu la main mais il restait des fichiers créer dans mon repertoire Sans titre.jpg
    je vais essayer de remplacer la commande1 par une création de fichier histoire de voir

  20. #19
    pm42

    Re : Script Shell

    Tu peux aussi taper ulimit -a pour savoir combien de processus et fichiers tu peux avoir ouverts simultanément.

  21. #20
    Sorye-ge-ton

    Re : Script Shell

    65535 apparement

    cependant j ai un freeze meme sur une boucle de 500 iterations (donc 500 fichiers ouvert en meme temps au maximum)
    Je ne sais pas si la syntaxe de mon script est bonne, je n'ai pas de soucis sur une itération par contre quand j en fais plusieurs le script s'arrette souvent avant la fin sans me rendre la main, je ne sais pas trop à quoi c est du

Discussions similaires

  1. exo script shell à faire (linux)
    Par invite911ef0c8 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 15/01/2011, 10h26
  2. script shell
    Par invite97b21456 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 22/12/2010, 14h22
  3. Programmation script shell ksh unix
    Par invite3ac0dbd7 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 10/10/2009, 16h10
  4. shell ou script linux
    Par invited9f05e20 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 26/03/2009, 07h44
  5. Ecriture d'un script shell
    Par invite1d93df33 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 28/09/2008, 20h44