Forum Programmation.shell script qui fonctionne dans une console mais pas entièrement avec cron

Posté par  .
Étiquettes : aucune
0
7
août
2009
Bonjour,
mon script doit
1) enregistrer un flux (émission sur france inter) sur mon disque
2) renommer le fichier obtenu.
Si je lance mon script en console tout fonctionne. Si je le fais exécuter par cron seulement l'enregistrement fonctionne.
voici mon script :

#!/bin/bash
date=$(date +%Y_%m_%d)

/usr/bin/mplayer -ao pcm:file=/home/stef/emission/info.wav -nocache -playlist /home/stef/Desktop/info.ram

for i in info.wav ; do
echo "changer le nom pour $i => $date-$i"
mv $i $date-$i
done


Auriez-vous une piste voire une solution ?

Stef
  • # laisse moi deviner

    Posté par  . Évalué à 5.

    c'est le renommage qui ne fonctionne pas...

    peut-etre parce que tu lances la commande dans le dossier /home/stef/emission
    mais que le cron ne la lance pas à partir de ce dossier

    ensuite pourquoi une boucle for pour gerer un seul fichier

    #!/bin/bash

    date=$(date +%Y_%m_%d)

    /usr/bin/mplayer -ao pcm:file=/home/stef/emission/$date-info.wav -nocache -playlist /home/stef/Desktop/info.ram


    devrait suffir
    • [^] # Re: laisse moi deviner

      Posté par  . Évalué à 1.

      en plus tu fais une boucle pour 1 fichier.
    • [^] # Re: laisse moi deviner

      Posté par  . Évalué à 1.

      Ok, ton
      #!/bin/bash

      date=$(date +%Y_%m_%d)

      /usr/bin/mplayer -ao pcm:file=/home/stef/emission/$date-info.wav -nocache -playlist /home/stef/Desktop/info.ram

      fonctionne !!!

      Ensuite pour la remarque :

      ensuite pourquoi une boucle for pour gerer un seul fichier

      Je suis un pauvre débutant qui copie des portions de code par ci par là et sans trop savoir, parfois, ce qu'il fait.

      Merci beaucoup
      • [^] # Re: laisse moi deviner

        Posté par  . Évalué à 2.

        C'est dangereux ça tu sais ! Surtout avec le shell ou le moindre espace ou saut de ligne manquant peut rendre ta machine inutilisable et même perde des données !
        • [^] # Re: laisse moi deviner

          Posté par  . Évalué à 1.

          Merci pour l'avertissement.
          Je suis sous GNU/Linux depuis 2000, je n'ai jamais cassé ma bécane et je prends quand même quelques précautions. Mais c'est vrai qu'il faut faire gaffe.
          • [^] # Re: laisse moi deviner

            Posté par  . Évalué à 1.

            je prends quand même quelques précautions

            À la vue de ce que tu fais, j'espère que tu n'as pas le mot de passe root... :)
  • # Fais peter les logs !

    Posté par  . Évalué à 2.

    Je pense que NeoX à raison, mais fait peter les logs quand même !
    • [^] # Re: Fais peter les logs !

      Posté par  . Évalué à 1.

      J'ai pas trouvé de logs concernant cron dans /var/log.
      Ou se trouvent ils ?
      • [^] # Re: Fais peter les logs !

        Posté par  . Évalué à 2.

        souvent dans /var/log/messages

        il faut filtrer les lignes contenant cron
  • # Cron ne sait pas où il est !

    Posté par  (site web personnel) . Évalué à 3.

    Hello,

    petite suggestion:
    dans la boucle « for i in info.wav », le shell présume que le fichier info.wav est dans le répertoire courant... Or, celui-ci est dans /home/stef/emmission/ !

    Le script peut fonctionner mais il faut lui dire où est situé le fichier info.wav sinon la boucle ne fera rien.

    Le script marche en mode console si tu es dans le répertoire /home/stef/emmission/

    Si tu commences à faire du shell avec Bash, je ne peux que te recommander le «Guide avancé d'écriture des scripts Bash »: http://abs.traduc.org/

    Bon courage pour la suite ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.