IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script shell non exécuté entièrement


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut Script shell non exécuté entièrement
    Bonjour,

    Voilà mon problème :

    J'ai un script traitant des vidéos, une par une.
    Or, lorsque je souhaite traiter des vidéos de plus de 4/5Go chacune, mon script traite la première, nickel, mais s'arrête là, et ne traite pas les autres.

    J'ai fait mes tests, c'est à dire traiter des moins grosses vidéos (50mo easy), et là mon script les traite toutes.

    Donc voilà, est ce que vous auriez une idée ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par valgoku Voir le message
    Donc voilà, est ce que vous auriez une idée ?

    Merci
    Salut
    Mon idée c'est que le programme qui traite la vidéo plante (parce que peut-être vidéo trop grosse, machine sous-dimensionnée etc...) en renvoyant une erreur au shell. Et comme il est probable que le script fait une boucle de ce type
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for file in $*
    do
        traitement_video $file
        test $? -ne 0 && exit
    done
    Ben comme ça plante à la première ça sort en erreur à la première...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Je ne pense pas que ça soit le code de retour qui fasse planter le script.
    J'ai en effet, quelques traitements avant, découpant la vidéo en plusieurs mini-vidéos.

    Ma boucle est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in $(ls *.mkv | sort -V); do
    		if [ $i =  $nameVideoSecond ]
    		then 
                      ......
    done
    Et mes programmes sont capables de gérer des vidéos de la taille de celle que je lui passe.


  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if [ $i =  $nameVideoSecond ]
    Nous n'avons pas de visibilité sur l'ensemble de ton script mais est-ce que la condition if est remplie à chaque itération?

    Peux-tu executer le script en mode debug pour voir ce qu'il se passe et éventuellement fournir le ficheir trace?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bash -xv /chemin/vers/ton/script 2>&1 | tee trace.log

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par valgoku Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in $(ls *.mkv | sort -V); do
    		if [ $i =  $nameVideoSecond ]
    		then 
                      ......
    done
    Salut

    Je ne sais pas ce que fait l'option "-V" de sort (le man d'internet ne dit rien à ce sujet et j'ai la flemme de lancer mon linux pour regarder) mais étant donné que ls te donne des fichiers triés par ordre alphabétique, je pense que le sort est inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in $(ls *.mkv); do
    		if [ $i =  $nameVideoSecond ]
    		then 
                          ...
                    fi
    done
    De plus, le for est par lui-même capable de récupérer les fichiers d'un répertoire donc le ls devient lui-aussi un peu inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in *.mkv; do
    		if [ $i =  $nameVideoSecond ]
    		then 
                          ...
                    fi
    done
    Et enfin, accessoirement j'espère que ta boucle fait autre chose parce que parcourir n fichiers pour, au final, n'en traiter qu'un seul est un peu incongru.

    Sinon ben sans avoir le script entier (ou au-moins la partie qui plante) on peut pas faire grand chose de plus...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bonsoir,

    Je suis désolé Mygale1978 mais je ne peux vous fournir ce fichier, ni beaucoup d'autre partie du code, c'est professionnel.

    Mais je vais étudier ce fichier, et je vais voir quelles sont les étapes, et je vous tiendrai au courant.
    Pour ce qui est du -V c'est pour trier dans l'ordre.
    Pour ce qui est du for avec le ls, il me semble que j'avais fait ça, car sinon il ne me parcourait pas tous mes fichiers.

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par valgoku Voir le message
    Pour ce qui est du -V c'est pour trier dans l'ordre.
    Quel est l'intérêt de trier les fichiers puisque de toute façon, tu dois tous les traiter ?
    Pour ce qui est du for avec le ls, il me semble que j'avais fait ça, car sinon il ne me parcourait pas tous mes fichiers.
    Ca n'a pas de sens. ls est ici superflu, *.mkv représenté déjà tous les fichiers avec cette extension. ls n'a aucune plus value et risque plutôt de poser problème si par hasard, tu as un répertoire avec le suffixe .mkv.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 851
    Points
    5 851
    Par défaut
    Citation Envoyé par valgoku Voir le message
    Pour ce qui est du -V c'est pour trier dans l'ordre.
    En effet, il est bien connu que, sans l'option -V, la commande "sort" trie dans le désordre

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Citation Envoyé par jack-ft Voir le message
    Je ne sais pas ce que fait l'option "-V" de sort (le man d'internet ne dit rien à ce sujet et j'ai la flemme de lancer mon linux pour regarder)
    [...]
    En effet, il est bien connu que, sans l'option -V, la commande "sort" trie dans le désordre
    Extrait du man sort :
    -V, --version-sort
    tri naturel des numéros (de version) dans le texte
    Ce que fait aussi la commande ls avec l'option "-v", extrait du man ls :
    -v tri naturel des numéros (de version) dans le texte

  10. #10
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Ces options ne sont pas standard, ce sont des extensions de Gnu find et Gnu ls.

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par valgoku Voir le message
    Bonsoir,

    Je suis désolé Mygale1978 mais je ne peux vous fournir ce fichier, ni beaucoup d'autre partie du code, c'est professionnel.
    Admettons. Mais rien en t'empêche d'extraire la partie qui contient ta boucle de traitement, la mettre dans un autre script shell et nous balancer ce mini-script. Tu vas pas me dire que traiter un fichier mkv par un outil vidéo X c'est tellement pro que tu peux pas le livrer sur le net. Accessoirement ça te permettra aussi de tester toi-même cette simple partie...

    Citation Envoyé par valgoku Voir le message
    Pour ce qui est du -V c'est pour trier dans l'ordre.
    Mouais pas vraiment clair comme explication mais bon, je pense que les diverses remarques pleines d'humour à ce sujet t'ont montré qu'il n'est pas super utile...

    Citation Envoyé par valgoku Voir le message
    Pour ce qui est du for avec le ls, il me semble que j'avais fait ça, car sinon il ne me parcourait pas tous mes fichiers.
    Ca peut arriver si tu as un espace dans un nom de fichier. Le for séparera le nom en 2 et traitera chaque partie de nom de façon distincte. Bien entendu aucune partie ne sera traitée et le fichier lui-même ne le sera pas non plus.
    Généralement on essaye de ne pas avoir d'espace dans les noms. Mais si cela arrive quand-même, alors on passe par une autre structure: le read qui se cale sur le <return> et non sur l'espace
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ls rep |while read fichier
    do
        traitement rep/$fichier
    done

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous,

    Premièrement je dois vous dire que vos remarques m'ont été utiles.
    J'ai en effet dégagé certains ls n'ayant pas lieu d'être.
    Secondement il était vrai que mon if ne s'executait pas tout le temps, enfin comme je l'imaginais, et faisait arrêter mon script. (fichier de log utile , merci Mygale1978).
    Troisièmement, j'ai décidé de passer par des fichiers.
    Ca me facilite vraiment mon script et assure le bon traitement.

    Pour les vannes pour les -V, les etc etc, il faut m'excuser ^^ En apprentissage

    Et dernièrement, il est vrai que j'aurai pu surement vous faire partager du code, mais la concurrence est dure, donc il vaut mieux limiter les fuites !!

    Merci en tout cas à vous tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script shell pour exécuter script sql avec variable
    Par Thibault69009 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/08/2014, 15h39
  2. Réponses: 1
    Dernier message: 12/11/2011, 12h19
  3. Exécuter un script Shell en Java
    Par hyperman22 dans le forum Langage
    Réponses: 1
    Dernier message: 22/11/2007, 13h07
  4. Exécuter un script shell via le fichier .mailrc
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/06/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo