[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. 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..
    1. Slt,
      Oui j'ai éffectivement le comporttement que vous decrivez là
      donc mon cron fonctionne !

      mais pourkoi ma commande ne marche pas ?
      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
        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#
          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
            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
              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
                1. Modérateur
                  affiche aussi
                  ls -l /fektest.sh 
                  pour redémarrer ton cron utilise
                  /etc/init.d/cron restart
                  --
                  lami20j
                  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#
                    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*'
                      1. 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
                        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
                          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 

                          2. Contributeur
                            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.
                        2. 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 ?