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 :

faire tourner un script en tache de fond


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut faire tourner un script en tache de fond
    Bonjour,

    Et oui encore un petit problème...(normalement c'est le dernier truc en shell que je fais...)

    Voila grâce aux posts précédent j'ai un script qui imprime un fichier en .pdf dans un répertoire et j'ai un script qui envoie un fichier de ce répertoire via un serveur ftp. Et évidemment j'aimerai que ca se fasse automatiquement maintenant
    En clair je voudrais qu'a chaque fois que mon premier script me crée mon fichier il l'envoie directement via le serveur ftp...

    J'ai bien essayé simplement d'appeler mon second script a la fin du premier mais byzarrement il n'est jamais appelé.
    Alors j'ai eu l'idée un peu byzarre de tester en permanence si un nouveau fichier arrive dans mon repertoire et si c'est le cas l'envoyer.
    J'ai déja la fonction pour compter le nombre de fichier, ce que je sais pas faire c'est faire tourner le programme en permanence avec une boucle while par exemple...

    Est ce que ça prendrait pas trop de RAM? est ce que c'est possible??

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    Bonjour,

    Effectivement il n'est pas recommandé de faire une boucle infinie (while) pour tester l'existence d'un fichier, et faire une action.

    Soit tu ajoutes une tache dans le CRON, tu peux par exemple la faire executer tous les quarts d'heure.

    Soit, tu trouves le moyen de régler le problème en amont, à savoir d'appeler ton second script à la fin de ton premier.

    Je pense que la deuxième solution est la meilleur. Peux-tu nous montrer ton premier script ?

    Lilian.

  3. #3
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    Tu as sans doute raison, mais tu crois que ca fais prend vraiment beaucoup de RAM une petite boucle de rien du tout...

    Mon premier script c'est un script d'impression pdf en fait il est un peu compliqué mais je pense que tu devrais comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    # Define where gs is
    ####gs="/usr/sfw/bin/gs"
    gs="/opt/sfw/bin/gs"
    outdir="/home/p3rtp/SmartPdf"
     
     
     
     
     
    if [ $# -ne 2 ]; then
    	echo "Usage : SmartPdf <size> <filename>
    	echo " size can be a3 and a4 "
    	echo " filename is only required if not used in the printer command"
    	echo " of Pinnacle"
    	echo " For use in Pinnacle, just make a printer with the line :"
    	echo " SmartPdf a4 " and select the according pagesize"
    	exit 1
    fi
     
     
     
    if test ! -x "$gs"; then
    	echo "gs is not present or not executable. Bailing out"
    	echo "Please try to configure SmartPdf with the correct executable"
    	exit 1
    fi
     
    if test ! -d "$outdir"; then
    	echo "Directory $outdir does not exit"
    	mkdir -m777 $outdir
    fi
     
     
    if test ! -f $2 ; then
    	echo "File $2 not found"
    	echo "$2 should be the file to be converted"
    	exit 1
    fi
     
     if [ "$1" != "a4" ] && [ "$1" != "a3" ] ; then
           echo "The size supported at this modent is a4 and a3"
           exit 1
     fi
     
    OPTIONS="-dSAFER "
     
    GS_LIB="/usr/openwin/lib/X11/fonts/Type1"
    GS_LIB="$GS_LIB:/usr/openwin/lib/X11/fonts/Type1/outline"
    GS_LIB="$GS_LIB:/usr/openwin/lib/X11/fonts/Type1/sun"
    GS_LIB="$GS_LIB:/usr/openwin/lib/locale/iso_8859_8/X11/fonts/Type1"
    GS_LIB="$GS_LIB:/usr/openwin/lib/locale/iso_8859_13/X11/fonts/Type1"
    ###GS_LIB="$GS_LIB:/usr/sfw/share/ghostscript/fonts"
    GS_LIB="$GS_LIB:/opt/sfw/share/ghostscript/fonts"
    GS_LIB="$GS_LIB:/opt/sfw/share/a2ps/fonts"
    GS_LIB="$GS_LIB:/opt/sfw/share/ogonkify/fonts"
    GS_LIB="$GS_LIB:/opt/sfw/share/groff/font/devps"
    export GS_LIB
     
    ## I want the in file to be the last option
     
    infile="$2"
    format="$1"
    outfile=` grep "106 562" $infile |  sed s/"106 562 moveto "/""/ | sed s/") show"/""/ | sed s/"("/""/  | cut -d" " -f1 `
     
     
    if [ "$outfile" = "" ] ; then
    { 
    # see if this is a print plan
      outfile=` grep "131 727" $infile |  sed s/"131 727 moveto "/""/ | sed s/") show"/""/ | sed s/"("/""/  | cut -d" " -f1 `"_Plan_"
    }
    fi
     
    if [ "$outfile" = "" ] ; then outfile="SmartPdf" 
    fi
     
    outdate=`date '+%m.%d.%y-%H:%M:%S'`
     
     
    # We have to include the options twice because -I only takes effect if it
    # appears before other options.
    # exec causes this shell to be closed, and no further commands are taken. 
    # So not using exec 
    # exec can be given to the last command run from this shell.
    # exec "$gs" $OPTIONS -q -dNOPAUSE -dBATCH -sPAPERSIZE=$format -sDEVICE=pdfwrite "-sOutputFile=$outdir/$outfile.$outdate.pdf" $OPTIONS -c .setpdfwrite -f $infile
    #echo "$infile"
    #echo "$gs" $OPTIONS -q -dNOPAUSE -dBATCH -sPAPERSIZE=$format -sDEVICE=pdfwrite "-sOutputFile=$outdir/$outfile.$outdate.pdf" $OPTIONS -c .setpdfwrite -f $infile
     
    $gs  $OPTIONS -q -dNOPAUSE -dBATCH -sPAPERSIZE=$format -sDEVICE=pdfwrite "-sOutputFile=$outdir/$outfile.$outdate.pdf" $OPTIONS -c .setpdfwrite -f $infile
    La derniere ligne est la plus importante, a la fin on obtient le fichier pdf dans outdir il s'apelle outfile.outdate.pdf par exemple suzan.12/09/10-12:53:41.pdf

    bref j'ai essayé de lancer mon script zzzz.sh qui envoie le fichier pdf qui vient d'être crée à la derniere ligne comme ca :
    j'ai aussi essayé comme ca
    mais rien ne se passe, il me convertit mon truc en pdf mais ne m'apelle pas le script...


    Sinon j'ai fais un script qui utilise une boucle while et qui marche bien...Mais comment faire pour qu'il s'exécute de lui même au démarrage de l'ordinateur...??(même si c'est dangereux j'men fous j'suis une wariorre!!!

    Merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    Ce n'est pas une histoire de RAM, mais plutôt d'usage CPU, et aussi ce n'est pas très propre...

    Est-ce que gs te sors une erreur ?
    Tes PDF sont nikels, ils ne contiennent pas une page blanche ?
    Essaie de mettre nohup devant $gs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    nohup $gs ...
     
    ici l'appel à ton autre script d'envoie ftp
    Lilian.

  5. #5
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    Ca marche toujours pas...

    et tu sais comment on le lance automatiquement? Parceque j'ai testé et l'ordinateur rame pas même avec ma boucle...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    De quels type de droits disposes tu ?

    Si tu as accès au cron, tu peux l'y ajoutes

    crontab -e

    et tu mets la ligne qui va bien pour appeler ton script

    Lilian.

Discussions similaires

  1. Faire tourner une GtkDialog en tache de fond
    Par Gamall dans le forum GTK+ avec C & C++
    Réponses: 19
    Dernier message: 15/09/2010, 17h23
  2. [PERL] faire tourner un script comme un service
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 13h34
  3. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 14h06
  4. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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