[cron] Ajouter un script au cron.daily

Ajouter un script au cron.daily [cron] - Logiciels - Linux et OS Alternatifs

Marsh Posté le 18-10-2007 à 16:49:45    

Salut,
 
Je suis actuellement sur une FC6 et je souhaiterais exécuter un script qui lance un RSYNC tous les jours.
 
J'ai déjà le cron.daily qui s'exécute tous les jours à 4h02. J'aurais donc aimé que mon script se lance à cette horaire.
 
J'ai donc fait un lien symbolique dans le dossier /etc/cron.daily vers mon script et sur le script et sur le lien j'ai fait un chmod 777 pour etre sur...
 
Le problème que j'ai c'est que mon script ne se lance pas... :fou:  
 
Quand je le fais à la main (./script_rsync ) c'est OK; mais pas en automatique.
 
 
quand je fais un vim de /etc/crontab j'ai:

Code :
  1. SHELL=/bin/bash
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3. MAILTO=root
  4. HOME=/
  5. # run-parts
  6. 01 * * * * root run-parts /etc/cron.hourly
  7. 02 4 * * * root run-parts /etc/cron.daily
  8. 22 4 * * 0 root run-parts /etc/cron.weekly
  9. 42 4 1 * * root run-parts /etc/cron.monthly
  10. ~


 
et pourtant quand je fais un crontab -e (qui si je ne m'abuse devrait me montrer le contenu du cron de mon user (en l'occurence root)) c'est vide...
 
Pourriez vous m'aider?
 
Merci par avance!!


Message édité par sonic_on_ecstasy le 19-10-2007 à 09:38:14
Reply

Marsh Posté le 18-10-2007 à 16:49:45   

Reply

Marsh Posté le 18-10-2007 à 16:56:37    

oula, pour editer une crontab c est :

Code :
  1. crontab -u username -e


et pour la visualiser

Code :
  1. crontab -u username -l
 

dans tout les cas fait un man crontab pour bien comprendre son fonctionnement ;)

Message cité 1 fois
Message édité par Le_Tolier le 18-10-2007 à 16:57:22

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 18-10-2007 à 16:57:46    

mais si je suis logguer en root et que je fais un crontab -e je vois pas le crontab de root?
 
EDIT:
 
Je viens de faire un crontab -u root -e bah c'est la meme chose que crontab -e   :(


Message édité par sonic_on_ecstasy le 18-10-2007 à 16:59:23
Reply

Marsh Posté le 18-10-2007 à 17:03:07    

bah oui c'est normale :) je vois pas ou est ton prob ?  
tu as plus qu'a rajouter la ligne qui va bien ds ta crontab vu que maintenant tu connais la commande pour editer une crontab


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 18-10-2007 à 17:05:34    

en fait la question que je me pose c'est pourquoi est ce que qd je rajoute mon script dans le cron.daily ca me le lance pas tous les jours à 4h du matin?
 
faut absolument le faire par le crontab?

Reply

Marsh Posté le 18-10-2007 à 17:15:28    

j'ai pas bien compris ta manip, qui m'a l'air pas du tout correct poru cronner un script.
La bonne demarcche c'est d'éditer la crontab du user voulue avec le crontab -e puis de remplir cette crontable avec la syntaxe qui va bien :

Citation :


#Cron ntpdate
00      06      *       *       1                                       /usr/sbin/ntpdate 212.97.63.99 >>/var/log/syslog 2>&1

 

#Cron pour le backup des bdd
00      03      *       *       1-7     /root/scripts/backup_daily.bash  >>/var/log/backup.log 2>&1

 


 

dans le présent le 1er jour de chaque semaine à 6h00 du mat ntpdate est lancé.
2eme ligne chaque de la semaine à 3h00 (03h00 AM) un script de backup est lancé.
Mais encore fois regarde le man crontab et tu verras tu comprendras bcp mieux


Message édité par Le_Tolier le 18-10-2007 à 17:17:23

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 18-10-2007 à 17:30:57    

très bien j'ai rajouté dans ma crontab:
 
00  04  *  *  *  /usr/local/bin/script_rsync
 
 
donc tous les jours à 4h j'ai mon script qui se lance...enfin théoriquement!! :)
 
pour essayer de ré expliquer ma méthode, j'avais rajouter dans le dossier cron.daily mon script en espérant qu'il se lance avec le reste du cron.daily!
 
Merci pour ton aide en tout cas.
 
@+

Reply

Marsh Posté le 18-10-2007 à 17:57:39    

sonic_on_ecstasy a écrit :

très bien j'ai rajouté dans ma crontab:
 
00  04  *  *  *  /usr/local/bin/script_rsync
 
 
donc tous les jours à 4h j'ai mon script qui se lance...enfin théoriquement!! :)
 
pour essayer de ré expliquer ma méthode, j'avais rajouter dans le dossier cron.daily mon script en espérant qu'il se lance avec le reste du cron.daily!
 
Merci pour ton aide en tout cas.
 
@+


 
normalement ca ce lanceras il y a pas de souci, si ton script est bien fait car quand il est lancé via cron c'est un environnemnt différent de celui de root qui est utilisé. Tu devrais aussi rediriger la STOUT et STERR car sinon tu risque de te faire pourrir par mail si jamais il y a des erreurs.


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 18-10-2007 à 18:03:08    

Le_Tolier a écrit :


Tu devrais aussi rediriger la STOUT et STERR car sinon tu risque de te faire pourrir par mail si jamais il y a des erreurs.


 
Ok jsuis d'accord...mais comment je dois faire ça?? lol (tu viens de me tuer en 2 mots...  :heink:

Reply

Marsh Posté le 18-10-2007 à 18:11:42    

Le_Tolier a écrit :

Tu devrais aussi rediriger la STOUT et STERR car sinon tu risque de te faire pourrir par mail si jamais il y a des erreurs.


Plutot configuré la variable MAILTO à rien du tout pour qu'il n'envoit aucun mail(cf man 5 crontab).

 

sinon pour les redirections cf le man de ton shell. Il s'agit de le faire avec des > et des 2&>  vers /dev/null par exemple


Message édité par o'gure le 18-10-2007 à 18:19:47

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 18-10-2007 à 18:11:42   

Reply

Marsh Posté le 18-10-2007 à 22:51:05    

@daily

Reply

Marsh Posté le 19-10-2007 à 09:37:58    

dernier problème et puis j'arrête...vu que c'est une sauvegarde (un RSYNC), j'aimerai avoir des logs...donc dans mon script j'ai mis:
 

Code :
  1. #!/bin/bash
  2. #
  3. #
  4. LOG=/var/log/rsync.log
  5. SRC=/home/usrprf/
  6. DEST=NASF:/home/rsync/SERV2000
  7. echo "" >> $LOG
  8. echo "------------------------------------------------" >> $LOG
  9. date +"!!Rsync donnees utilisateurs!!  %d-%m-%Y %H:%M" >> $LOG
  10. echo "" >> $LOG
  11. rsync -avc --delete $SRC $DEST >> $LOG
  12. echo "" >> $LOG
  13. echo "------------------------------------------------" >> $LOG
  14. date +"!!Fin du script!!  %d-%m-%Y %H:%M" >> $LOG
  15. echo "------------------------------------------------" >> $LOG
  16. echo "" >> $LOG


 
donc dans /var/log/rsync.log, ça m'écris à chaque fois date et heure de début et de fin et toutes les modifs qui sont faites.
 
Quand je le lance à la main ça marche, et quand je le fais via cron bah rien dans ce fichier de log...
 
ou est ce que je peux trouver des logs de ma sauvegarde?
 
dans /var/log/ j'ai rien (les logs cron, cron.1 cron.2 cron.3 ne correspondent pas en date...) mon rsync.log que je mets dans mon script marche pas... et dans /var/spool/mail/root j'ai rien a ce sujet non plus...donc je peux pas savoir si tout est ok... :(  
 
merci pour votre aide!!

Reply

Marsh Posté le 19-10-2007 à 16:33:45    

Ptit UP pour la week end...

Reply

Marsh Posté le 07-02-2008 à 15:58:34    

Un ptit UP pour déterrer le topic...
 
Jsuis toujours là dessus, sur plusieurs machines différentes et ça marche pas!
 
Je ré expose mon problème peut être plus clairement qu'au début...
 
J'ai un script de backup dans /usr/local/bin qui s'appelle script_rsync et qui est bien exécutable...  (si je fais ./script_rsync ça fonctionne.
 
 
Dans la crontab de root j'ai rajouté la ligne suivante: (avec un crontab -e)
 

10   04    * * * /usr/local/bin/script_rsync

 
Pourtant mon script ne se lance pas à 4h10 du matin tous les soirs....
 
 
 
 
Au passage je remets mon script:
 

Code :
  1. #!/bin/bash
  2. #
  3. #
  4. LOG=/var/log/rsync.log
  5. SRC=/home/DocUsers/
  6. SRC2=/home/Partage/
  7. DEST=NASF:/home/rsync/SERV0500/Data/
  8. DEST2=NASF:/home/rsync/SERV0500/Partage/
  9. echo "" >> $LOG
  10. echo "------------------------------------------------" >> $LOG
  11. date +"!!Rsync donnees utilisateurs!!  %d-%m-%Y %H:%M" >> $LOG
  12. echo "" >> $LOG
  13. rsync -avc --delete $SRC $DEST >> $LOG
  14. echo "" >> $LOG
  15. echo "------------------------------------------------" >> $LOG
  16. date +"!!Fin rsync DATA!!  %d-%m-%Y %H:%M" >> $LOG
  17. echo "------------------------------------------------" >> $LOG
  18. echo "" >> $LOG
  19. echo "" >> $LOG
  20. echo "------------------------------------------------" >> $LOG
  21. date +"!!Rsync Partage!!  %d-%m-%Y %H:%M" >> $LOG
  22. echo "" >> $LOG
  23. rsync -avc --delete $SRC2 $DEST2 >> $LOG
  24. echo "" >> $LOG
  25. echo "------------------------------------------------" >> $LOG
  26. date +"!!Fin rsync Partage      !!  %d-%m-%Y %H:%M" >> $LOG
  27. echo "------------------------------------------------" >> $LOG
  28. echo "" >> $LOG


 
 
 
Si quelqu'un avait une ptite idée... c'est surement un ptit truc de rien du tout qui me bloque mais j'arrive pas à tomber dessus...
 
 
Merci pour votre aide...


Message édité par sonic_on_ecstasy le 07-02-2008 à 16:01:15
Reply

Marsh Posté le 08-02-2008 à 08:29:44    

Bon alors, déjà il va falloir reprendre quelques trucs ...
 
1/

Le_Tolier a écrit :

oula, pour editer une crontab c est :

Code :
  1. crontab -u username -e


et pour la visualiser

Code :
  1. crontab -u username -l




 
l'option -u permet de préciser l'utilisateur, si on ne la spécifie pas, la commande considère l'utilisateur courant
 
donc dans ton cas,
crontab -u root -e et crontab -e (en tant que root) c'est pareil
 
 
2/ crontab -e ça édite la crontab d'un utilisateur rien à voir avec les cron.d, cron.daily, ... du système
Pour eux il n'y a pas (en ligne de commande du moins) d'éditeur de conf, c'est tout par scripts ...
 
3/ pourquoi ton script dans le dossier cron.daily ne marchait pas : je pense que le fait que tu aies mis un lien n'a pas du lui plaire, essaie avec ton script directement  
 
4/ ton problème de log / script qui ne se lance pas
- ton fichier /usr/local/bin/script_rsync est bien executable ?
- la partition dans laquelle il est n'a pas l'option noexec ?
- dans les logs de cron (/var/log/cron) as tu des traces comme quoi ton script est bien lancé ou rien du tout ?
- au passage, au lieu d'appeler directement rsync, fais une variable et précise le chemin complet. Les crons tournent dans un environnement plus que limité

Reply

Marsh Posté le 08-02-2008 à 09:51:26    

J'ai lancé simplement crontab puisque j'étais connecté en root mais c'est ce que je voulais.
 
Concernant les cron.d daily j'avais enlevé le lien lors des premières remarques.
 
Je n'ai donc que la crontab du user root qui est renseignée.
 
 
Et concernant le script, il est exécutable puisque j'arrive à le lancer à la main.
au passage, le ls -l donne  
 
-rwxr-xr-x 1 root root 975 fév  6 18:08 /usr/local/bin/script_rsync
 
et enfin dans le /var/log/cron je n'ai aucune trace que cron s'est lancé, j'ai simplement des traces de mes modifs de la crontab:
 

Code :
  1. Feb  7 15:58:45 SERV0500 crontab[24772]: (root) END EDIT (root)
  2. Feb  7 15:59:01 SERV0500 crond[23925]: (root) RELOAD (cron/root)
  3. Feb  7 16:04:30 SERV0500 crond[24809]: (CRON) STARTUP (V5.0)
  4. Feb  7 16:48:30 SERV0500 crontab[25051]: (root) BEGIN EDIT (root)
  5. Feb  7 16:49:42 SERV0500 crontab[25051]: (root) END EDIT (root)
  6. Feb  7 17:13:59 SERV0500 crontab[25138]: (root) BEGIN EDIT (root)
  7. Feb  7 17:14:05 SERV0500 crontab[25138]: (root) REPLACE (root)
  8. Feb  7 17:14:05 SERV0500 crontab[25138]: (root) END EDIT (root)
  9. Feb  7 17:14:09 SERV0500 crontab[25140]: (root) LIST (root)
  10. Feb  7 17:15:01 SERV0500 crond[24809]: (root) RELOAD (cron/root)


 
Et enfin je vais regardé pour créer une  variable vers le chemin du rsync
 
Merci pour ton aide.


Message édité par sonic_on_ecstasy le 08-02-2008 à 09:52:03
Reply

Marsh Posté le 08-02-2008 à 11:22:30    

fais voir la sortie de la commande "mount"

Reply

Marsh Posté le 08-02-2008 à 11:33:48    

/dev/sda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda7 on /home type ext3 (rw)
/dev/sda6 on /tmp type ext3 (rw)
/dev/sda2 on /usr type ext3 (rw)
/dev/sda3 on /var type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

Reply

Marsh Posté le 08-02-2008 à 14:15:18    

aller, mode debug à fond :
 
1- change ta crontab :
* * * * * /usr/local/bin/script_rsync
 
2- arrête le démon
/etc/init.d/cron stop
 
3- lance cron mais en 1er plan, sans démon :
cron -f
 
et dis nous ce qu'il se passe ...

Reply

Marsh Posté le 08-02-2008 à 18:39:30    

euh tu es sur de ta commande?
 
Je n'ai que crond et pas cron et pas de -f comme flag dispo...
 
Au passage je rappelle que je suis sur une FC6 64Bits.

Reply

Marsh Posté le 09-02-2008 à 10:50:53    

Deja pour la commande rsync, mets le path complet (/usr/bin/rsync à priori).

 

Sinon tu n'as aucune trace de tes echos dans le fichier le de log :??:
Et rien non plus dans le log de cron à l'heure ou il est supposé être lancé ?


Message édité par e_esprit le 09-02-2008 à 10:51:05

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 09-02-2008 à 17:15:58    

non rien du tout...
 
J'ai esasyé de faire un script tout bête qui s'exécute toutes les minutes toutes les heures... qui me revoi l'heure dans un fichier texte...rien du tout
 
J'ai également essayé de mettre les chemin complets pas mieux...
 
 
C'est comme si crond était dans les choux alors que le service tourne...
 
Dans les logs cron j'ai juste mes modifs de ma crontab et les reboot des services mais rien d'autre.
 
Any ideas?

Reply

Marsh Posté le 09-02-2008 à 17:49:35    

Truc bete mais bon... t'as essaye de mettre /bin/sh à la place de /bin/bash ?


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 10-02-2008 à 20:19:27    

non je n'ai pas essayé, mais j'ai repris le bin/bash d'un autre script qui fonctionnait sur un serveur équivalent (même distrib, même kernel...)
 
Dans le doute j'essaierai...

Reply

Marsh Posté le 10-02-2008 à 20:24:32    

sonic_on_ecstasy a écrit :

euh tu es sur de ta commande?
 
Je n'ai que crond et pas cron et pas de -f comme flag dispo...
 
Au passage je rappelle que je suis sur une FC6 64Bits.


 
je parlais de cron (et non crond) avec l'option -f pour dire de lancer cron mais pas en mode démon, de sorte qu'il ne se détache pas de la console depuis laquelle tu l'as lancé, pour ainsi que tu voies tout ce qu'il fait
 
 
man crond sur ta distrib pour voir si un truc similaire est possible sous FC6 ...

Reply

Marsh Posté le 13-02-2008 à 23:08:14    

Je conseillerais de vérifier la crontab en entier car il y a peut être une erreur qui empêche cron de s'y retrouver.


---------------
Legalize it @HFR
Reply

Marsh Posté le 14-02-2008 à 11:47:25    

la crontab a été vidée complètement.
De plus, plus aucune tache cron ne fonctionne (logrotate...)
 
J'ai passé cette commande pour lancer cron en interactif (en ayant bien sur arreté le démon) /usr/sbin/crond -x sch,load,test
 
et le résultat c'est  
 

Code :
  1. user [root:0:0:...] cmd="run-parts /etc/cron.monthly"
  2. user [root:0:0:...] cmd="run-parts /etc/cron.weekly"
  3. user [root:0:0:...] cmd="run-parts /etc/cron.daily"
  4. user [root:0:0:...] cmd="run-parts /etc/cron.hourly"
  5. user [root:0:0:...] cmd="cd /usr/sbin && perl ocsinventory-client.pl > /dev/null 2>&1"
  6. user [root:0:0:...] cmd="echo "HELLO WORLD" >> /var/log/test.jerem"
  7. Minute-ly job. Recording time 1202940781
  8. [19157] Target time=1202944440, sec-to-wait=60


 
 
et j'ai ça en boucle....on voit bien les tâches cron listées mais pas exécutées...
 
En sachant que la ligne * * * * * echo "HELLO WORLD" >> /var/log/test.jerem de la crontab a été mise sur une autre machine Fc6 et que ça marche...

Reply

Marsh Posté le 18-02-2008 à 18:49:53    

pour info le problème semble résolu,  
 
tout venait de l'utilisation d'un programme tiers pour gérer l'intégration à un domaine AD W2K3 qui avait modifié le fichier /etc/pam.d/system-auth
 
En remettant ce fichier dans sa configuration originale, tout est OK.
 
Merci qd mm d'avoir essayer de m'aider...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed