Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-07-2012 15:46:40

vanilla38
Membre
Inscription : 19-07-2012

[SHELL] Problème de lancement de script

Bonjour, j'ai un souci avec un script SHELL qui est censé faire ceci dans l'ordre:
     -Supprimmer le contenu d'un repertoire.
     -Supprimmer certaines entrées dans une BDD mysql.
     -Supprimmer les fichiers d'un répertoire si ils sont introuvables dans cette même BDD.

Voici le script:

 
        ### BEGIN INIT INFO
  # Provides:          YouStart
  # Required-Start:    $remote_fs $syslog
  # Required-Stop:     $remote_fs $syslog
  # Default-Start:     2 3 4 5
  # Default-Stop:      0 1 6
  # Short-Description: Supprime les données obsolètes pour YouLol.
  # Description:       Se lance au demarrage.
  ### END INIT INFO
 
  #!/bin/sh
 
  # Suppression des fichiers présents dans le repertoire "input"
  sudo rm var/www/input/* -Rf

  # Suppression des entrées bugguées dans la DB (suite a un crash ou une erreur)
  echo "DELETE FROM downloads WHERE url='downloading';" | mysql -u user -ppass youlol
  echo "DELETE FROM downloads WHERE url='error';" | mysql -u user -ppass youlol
  echo "DELETE FROM downloads WHERE url='';" | mysql -u user -ppass youlol

  # Suppression des fichiers non répertoriés dans la BDD et présents dans le dossier output
  dir="/var/www/output/*"

  for f in ${dir}
  do
      qry=$(echo "SELECT id FROM downloads WHERE url='${f##*/var/www/output/}';" | mysql -u user -ppass youlol)
      q=$(echo ${qry})
      if [ "${q}" == "" ]; then
            rm ${f}
      fi  
  done
 



Ce script fonctionne trés bien quand je le lance depuis la console.

Mon souci est que je souhaiterai qu'il se lance automatiquement au démarrage de la machine. j'ai donc utilisé les commmandes suivantes:

sudo chmod 755 /etc/init.d/YouStart


sudo update-rc.d YouStart defaults



Le script se lance correctement au démarrage:
     -Vide bien le repertoire "input".
     -Supprime bien les entrées vides, égales a "error" ou "downloading" dans la BDD.
     -Le problème est qu'il supprime aussi tout le contenu du répertoire "output" alors qu'il ne devrait ne supprimer que les fichiers non
      éxistants dans la BDD.

Merci de m'aider si quelqu'un a une idée, PS j'ai essayé de renommer mes liens relatifs dans rc2 3 4 et 5 en S99YouStart mais cela n'as rie changé.

Bonne journée a tous.

Hors ligne

#2 19-07-2012 18:47:27

Thuban
Modérateur
Distrib. : OpenBSD
Noyau : current
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Site Web

Re : [SHELL] Problème de lancement de script

Je ne suis pas sûr, mais il n'y aurait pas une erreur ici des fois :


qry=$(echo "SELECT id FROM downloads WHERE url='${f##*/var/www/output/}';" | mysql -u user -ppass youlol)
      q=$(echo ${qry})
 


la deuxième ligne n'est pas vraiment utile... Sinon vérifie à la main que

 echo "SELECT id FROM downloads WHERE url='${f##*/var/www/output/}';" | mysql -u user -ppass youlol


retourne bien quelque chose. Je ne connais pas mysql, mais apparement ça retourne juste une chaine vide.


YA3HGA-H

Hors ligne

Pied de page des forums