[Unix Solaris 5.8] - crontab prblm PATH

Bonjour,

J'ai un sacré problème avec la crontab.

J'ai configuré l'exécution d'un script dans la crontab de l'utilisateur root et j'ai un mail qui me prévient qu'il ne retrouve pas la commande utilisée dans ce script.

Or cette commande se trouve dans le PATH du root, par contre j'ai l'impression que le PATH est différent avec crontab car j'ai placé un echo $PATH dans mon script et le PATH comprend seulement deux chemins alors que celui que j'ai configuré dans le PATH du root est beaucoup plus complet et me permet de lancer mon script à la main.

Merci d'avance pour vos réponses.

17 réponses

  1. Modérateur
    Salut,

    Affiche-nous la ligne de ton crontab s'il te plaît, merci. ;-)
    Ta ligne comprend-t-elle le chemin complet vers ton programme ?
    As-tu exporté le "PATH" de root ?
    0
    1. Bonjour,
      j'ai le meme probleme et voici mon fichier /var/spool/cron/crontabs/root.
      en fait je voudrais exécuter le fichier "fektest.sh" qui se trouve dans le repertoire racine (/) de mon DD

      10 3 * * * /usr/sbin/logadm
      15 3 * * 0 /usr/lib/fs/nfs/nfsfind
      1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
      30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
      50 8 * * * ./fektest.sh
      #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
      ~

      Merci
      Tilk
      0
      1. Modérateur
        Salut,

        en fait je voudrais exécuter le fichier "fektest.sh" qui se trouve dans le repertoire racine (/) de mon DD

        50 8 * * * ./fektest.sh


        ton cas ce n'est pas pareil (en fin je suppose vu que david n'a rien affiché)

        dans ton crontab tu veux lancer la commande ./fektest.sh mais ./ ce n'est pas le répertoire racine mais le répertoire courant
        le répertoire racine est / donc tu dois écrire plutôt
        50 8 * * * /fektest.sh 

        0
      2. cron n'utilise pas le PATH défini dans le ou les profile.
        il n'y a pas de login, c'est à l'utilisateur de définir les bon PATH dans le crontab.
        0
    2. Slt Lami20j,

      je viens de metre /fektest.sh com vous avez dit au lieux de ./fektest.sh
      mais ca ne marche toujours pas !
      ne faudrait il pas relancer le service cron ? mais je n sais pas comment le faire !

      Merci Tilk
      0
      1. Modérateur
        ne faudrait il pas relancer le service cron ? mais je n sais pas comment le faire !
        Normalement il ne faut pas le relancer mais tu peux toujours essayer

        affiche
        find / -name  fektest.sh 
        find /etc -name '*cron*'
        0
        1. Voilà le resultat des deux commandes que vous avez demandé

          bash-2.05# find / -name fektest.sh
          /fektest.sh

          bash-2.05# find /etc -name '*cron*'
          /etc/cron
          /etc/cron.d
          /etc/cron.d/cron.deny
          /etc/default/cron
          /etc/init.d/cron
          /etc/rc0.d/K40cron
          /etc/rc1.d/K40cron
          /etc/rc2.d/S75cron
          /etc/rcS.d/K40cron
          /etc/webmin/cluster-cron
          /etc/webmin/cron
          bash-2.05#
          0
          1. Modérateur
            affiche aussi
            ls -l /fektest.sh 
            pour redémarrer ton cron utilise
            /etc/init.d/cron restart
            --
            lami20j
            0
            1. bash-2.05# ls -l fektest.sh
              -rwxr-xr-x 1 root other 7 May 11 08:38 fektest.sh
              bash-2.05#

              par ailleurs, le service cron est bien demarré

              Tilk
              0
              1. Modérateur
                Peux-tu afficher ton script?
                0
                1. c'est juste une commande et ca marche tres bien manuellement quand je fais ./fektest.sh à l'invite

                  le fichier fektest.sh ne contien qu'une seule ligne

                  reboot

                  en fait je voudrais pouvoir redemarer mon serveur à des moment precis
                  0
                  1. Modérateur
                    essaie avec
                    50 8 * * * /sbin/reboot
                    affiche le résultat de la commande
                     crontab -l -u root
                    chez moi par exemple j'ai
                    59 23  * * * /sbin/init 0
                    et ça fonctionne sans problèmes
                    0
                    1. Désolé mais ca ne marche tjrs pas
                      j'ai mis directement "50 8 * * * /sbin/reboot" et modifier l'heure par rapport à l'heure systeme pour voir l'exécution mais rien

                      voici le resultat de la commande demandée

                      bash-2.05# crontab -l -u root
                      crontab: illegal option -- u
                      crontab: proper usage is:
                      crontab [file | -e | -l | -r ] [user]
                      bash-2.05#
                      0
                      1. Modérateur
                        alors affiche
                        crontab -l root
                        tu peux tester comme ça
                        ajoute une commande de genre
                        */1 * * * *  echo salut  >> /dev/pts/1

                        ensuite en root tape
                        tail -f /var/log/syslog

                        si tu vois des lignes comme ça

                        May 11 12:29:02 debian /USR/SBIN/CRON[12821]: (root) CMD (echo salut >> /dev/pts/1)


                        alors ton cron fonctionne
                        0
                        1. Slt,
                          Oui j'ai éffectivement le comporttement que vous decrivez là
                          donc mon cron fonctionne !

                          mais pourkoi ma commande ne marche pas ?
                          0
                          1. Modérateur
                            Au lieu de reboot mets
                             /sbin/init 6
                            0
                            1. je crois que c'est la magie car ca ne marche toujours pas

                              Tilk
                              0
                              1. Modérateur
                                tu es en root ou pas?
                                chez moi ça marche
                                0
                                1. Ne jamais modifier le fichier crontab utilisateur directement. En effet, il ne faut pas faire :
                                  vi /var/spool/cron/crontabs/root
                                  => Cette modification n'est pas effective...

                                  Solution: (il faut passer par crontab -e pour éditer la crontab)
                                  export EDITOR=vi
                                  crontab -e
                                  Faire les modifications et enregistrer.

                                  Voili voilou..
                                  0