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 :

crontab ksh problème avec le .profile


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Par défaut crontab ksh problème avec le .profile
    Salut,

    J'ai plusieurs serveurs Linux (RHEL 5.x) chacun ayant plusieurs crontab.

    Les commandes lancées sont de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * ksh -c "(. ${HOME}/.profile; commande_ayant_besoin_des_vars_du_profile" 1>/path/1.log 2>/path/1.err
    Cela marche partout sauf sur un seul serveur.
    Il semblerait que cela soit l'appel du .profile qui ne se fait pas.

    J'ai tout vérifier 20fois sans succès.

    Une idée?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Par défaut
    Salut,

    Si cela peut aider, je ne crois pas que cela soit du à l'usage de la crontab.

    Dans un shell KSH interactif après valorisation de la variable dans le fichier .profile dans le fichier .profile :

    Cette commande donne la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . $HOME/.profile;echo $TOTO
    Celle ci non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c ". $HOME/.profile;echo $TOTO"
    Merci.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    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 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par daworld Voir le message
    Salut,

    Si cela peut aider, je ne crois pas que cela soit du à l'usage de la crontab.

    Dans un shell KSH interactif après valorisation de la variable dans le fichier .profile dans le fichier .profile :

    Cette commande donne la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . $HOME/.profile;echo $TOTO
    Celle ci non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c ". $HOME/.profile;echo $TOTO"
    Merci.
    Salut
    Celle-ci non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh -c ". $HOME/.profile;echo $TOTO"
    Ce qui signifie que l'option "-c" n'intègre pas la possibilité de sourcer un fichier

    Pourquoi ne créerais-tu pas un script "toto.ksh de ce style
    Code ksh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/ksh
    . $HOME/.profile
    commande_ayant_besoin_des_vars_du_profile

    Puis mettre ta ligne de cron ainsi * * * * * toto.ksh" 1>/path/1.log 2>/path/1.err ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2013
    Messages : 70
    Par défaut
    Citation Envoyé par daworld Voir le message
    Salut,

    Si cela peut aider, je ne crois pas que cela soit du à l'usage de la crontab.

    Dans un shell KSH interactif après valorisation de la variable dans le fichier .profile dans le fichier .profile :

    Cette commande donne la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . $HOME/.profile;echo $TOTO
    Celle ci non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c ". $HOME/.profile;echo $TOTO"
    Merci.
    Salut,
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c '. $HOME/.profile;echo $TOTO'
    Edit :
    Je ne peux pas essayer avec ksh mais en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ cat mes_var
    export toto=titi
    $ bash -c ". mes_var; echo $toto"
     
    $ bash -c '. mes_var; echo $toto'
    titi

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    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 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Postmortem Voir le message
    Salut,
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c '. $HOME/.profile;echo $TOTO'
    Super bien vu !!!
    Du coup celle-ci sh -c ". $HOME/.profile;echo \$TOTO" fonctionne aussi.
    En fait le pb ne vient pas du "-c" mais de ce que les variables sont interprétées par le shell courant avant d'être envoyées au ksh -c..
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Par défaut
    Citation Envoyé par Postmortem Voir le message
    Salut,
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c '. $HOME/.profile;echo $TOTO'
    [/code]
    Salut,

    Comme cela, ça marche!

    Pour jlliagre, désolé de n'avoir pas donnée assez de complément; les voici :

    ksh93.
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksh -c ". $HOME/.profile;echo $TOTO
    fonctionne sur d'autres serveurs RHEL 5.7 32bits monté de la même manière. mais pas sur celui sur lequel je travaille en ce moment.

    Ce qui me fait penser que cela ne marche pas, c'est que dans sortie standard (redirigée vers un fichier) le résultat du echo est vide pour les variables contenu dans le .profile et valorisé pour les variables comme le .

    J'ai vérifier, par rapport aux serveurs qui fonctionnent, le .profile, le ficher crontab, le ficher /etc/profile, la valeur de la variable $HOME, la valeur du shell par défaut.



    Pour finir, cela fonctionne donc à présent avec comme séparateur le ' et non pas le ".
    Pourquoi cette différence entre mes serveurs? Y a til un paramètre que j'aurais raté qq part?

    Merci

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    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 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par daworld Voir le message
    Pour finir, cela fonctionne donc à présent avec comme séparateur le ' et non pas le ".
    Si tu as bien lu ma réponse, tu sais aussi que ça marcherait avec ta syntaxe initiale mais en protégeant les caractères particulier comme le $ avec un backslash

    Citation Envoyé par daworld Voir le message
    Pourquoi cette différence entre mes serveurs? Y a til un paramètre que j'aurais raté qq part?
    A mon avis, les serveurs sur lequel ça fonctionne sont des serveurs dans lesquels les variables que tu utilises sont déjà initialisées ailleurs que dans le .profile. Et donc elles sont connues du cron.
    Et le serveur sur lequel ça ne fonctionne pas est un serveur plus récent, dans lequel il ne reste pas tout un tas de configs issues de tests dans tous les sens. Mais c'est lui qui fait foi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    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
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    A mon avis, les serveurs sur lequel ça fonctionne sont des serveurs dans lesquels les variables que tu utilises sont déjà initialisées ailleurs que dans le .profile. Et donc elles sont connues du cron.
    Ca parait difficilement plausible. cron lance les commande avec un environnement très limité (LOGNAME, HOME, SHELL, PATH et pas grand chose d'autre).

    Je chercherais plutôt du coté de $HOME/.kshrc et /etc/ksh.kshrc, chargés au démarrage de ksh, qui n'ont pas l'air d'avoir été vérifiés.

  9. #9
    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
    Par défaut
    Citation Envoyé par daworld Voir le message
    Les commandes lancées sont de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * ksh -c "(. ${HOME}/.profile; commande_ayant_besoin_des_vars_du_profile" 1>/path/1.log 2>/path/1.err
    Cela marche partout sauf sur un seul serveur.
    Il semblerait que cela soit l'appel du .profile qui ne se fait pas.

    J'ai tout vérifier 20fois sans succès.

    Une idée?
    quel ksh ? pdksh ou ksh93 ?
    La commande passée à ksh -c est invalide. Pourrais-tu mettre une vraie commande ?
    "ça marche partout sauf sur un seul serveur" n'est pas très précis.
    Qu'est-ce qui ne marche pas ? Le script ne se lance pas ? Il y a des messages d'erreur ?
    Qu'est-ce qui te fait penser que l'appel au .profile ne se fait pas ?
    Qu'est-ce que tu as vérifié vingt fois sans succès ?
    Qu'y a-t-il dans 1.log et 1.err ?

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

Discussions similaires

  1. Problème avec CRONTAB
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/08/2007, 16h23
  2. problème avec profil
    Par [ME]yeye dans le forum Oracle
    Réponses: 3
    Dernier message: 21/06/2006, 11h35
  3. Problème avec l'outil profile
    Par befb dans le forum MFC
    Réponses: 2
    Dernier message: 07/05/2005, 14h52
  4. [XP Pro]Problème avec plusieurs profils utilisateurs sur PC
    Par marsup54 dans le forum Windows XP
    Réponses: 8
    Dernier message: 27/04/2005, 09h32

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