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

  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.

  7. #7
    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
    Sinon, tu as init, pour le démarrage du système.

    Mais là aussi ca dépend des droits dont du disposes

    Lilian.

  8. #8
    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
    Juste une petite question..

    En fait, il s'agit d'une conversion ps to pdf, pourquoi ne pas utliser la commande
    ps2pdf ?

    Lilian.

  9. #9
    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
    Citation Envoyé par lilian_h Voir le message
    Juste une petite question..

    En fait, il s'agit d'une conversion ps to pdf, pourquoi ne pas utliser la commande
    ps2pdf ?

    Lilian.
    Oula je suis sur un système (un peu pourri mais je crois que c'est fais pour être fermé) C'est Sun système d'exploitation solaris (je sais plus quelle version) alors je suis pas sure que ca existe... De plus le sh est appelé par une imprimante (un peu comme pdfCreator ) dans le logiciel dont je dois récupérer les pdf. Donc je peux pas à travers mon logiciel lui mettre cette commande.
    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.
    Moi j'ai tous les droits moi Monsieur !!! Non mais j'ai les codes administrateurs mais ou je mets cette option ?? au début de mon script?

    Merci beaucoup en tout cas

  10. #10
    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
    Tu bosses sur un contrôleur d'impression ?? Si c'est ça, c'est pas banal !

    Et Madame dispose de tous les droits ...... piouf .... bah alors, il faut le mettre dans le init.

    Ce n'est pas une option a ajouter dans le script, mais il faut ajouter l'appel à ton script dans le init.

    Cherche ce que tu trouve dans /etc/init, s'agit-il d'un binaire, d'un dossier, ou autre ... donne moi les infos de ce que tu as dans /etc concernant init. Je ne connais pas suffisament solaris pour te dire précisément ce qu'il faut faire, mais si je sais ce qu'il y a au niveau du init, alors je retrouevrais mes petits.

    Et aussi, tu as l'aide en ligne :

    Lilian.

  11. #11
    Membre éclairé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Par défaut
    Une suggestion toute bête, en même temps elle me parait toute simple comme solution, mais peut être plus robuste en matière de gestion des ressources.

    T'as 2 scripts, donc tu crées 2 entrées dans le cron, le script appelant s'exécute 5mn avant l'appelé.

    Ce qui revient à me demander, l'utilité d'un 2ème script pour l'envoi par ftp, ça pouvait se faire dans le 1er non ?. Une fois ton pdf généré tu fais le post.

    Ou peut être que j'ai mal compris le problème ?!

  12. #12
    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
    POSTS 3,4,5,6

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, 18h23
  2. [PERL] faire tourner un script comme un service
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 14h34
  3. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 15h06
  4. Réponses: 2
    Dernier message: 11/07/2002, 09h31

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