Cron, crontab - Kesako

  • Créateur du sujet Créateur du sujet NeoJF
  • Date de début Date de début

NeoJF

Membre actif
1 Novembre 2000
485
6
40
1 chance sur 10 comme toi !
rch.web.free.fr
si qqun me donne des infos là-dessus, je sais pas ce que je lui fait
en fait rien, mais c'est le principe des forums !
bon, sérieusement, j'ai regardé le man dans tous les sens mais j'ai pas réussi à faire marcher le cron (je sais même pas ce que ça veut dire, j'crois juste que c'est un daemon ou un service qui lance des commandes à intervalles programmés et qu'on configure à l'aide de crontab) que SETI propose. Un peu d'aide me fera du bien, car j'essaie d'apprendre UNIX

------------------
NeoJF
G3 300 Beige, MacOS X 10.0.3
"Être Mac ou ne pas Être, telle est la Question."
 
Eh bien tu sais tout !

Effectivement, cron est un process unix qui est lancé automatique à chaque boot, et qui s'occupe de gérer les taches qui doivent revenir à intervalles réguliers. Par exemple, il peut servir à programmer des sauvegardes, à relever des boites aux lettres, a relancer d'autres process,

Ses directives figurent dans le fichier crontab.

Si tu veux avoir des détails plus précis, vas dans le terminal et consulte le manuel en ligne :
man cron
man crontab
Le man te renverra aussi aux commandes et fichiers qui ont un rapport avec cron.

Attention cependant, si je me souviens bien, cron fait partie de la section (2) du manuel, et je je ne suis pas sur qu'OS X l'installe en standard.

Si man te renvoie un command not found, alors il est probable que tu doives installer le CD "développeur" livré avec Mac OS X pour avoir les pages manquantes du manuel.

Essaie avant de faire un post pour savoir si quelqu'un a installe ce CD et peut vérifier qu'effectivement le man est mis à jour.
 
ok, merci pour les infos
de toute facon, j'ai déjà installé le dev cd
il semble par contre que je doive me plonger vraiment dans man
frown.gif
, tant pis !

------------------
NeoJF
G3 300 Beige, MacOS X 10.0.3
"Être Mac ou ne pas Être, telle est la Question."
 
Les bases Unix, c'est simple :

1) TOUT est associé à un fichier, par exemple un disque c'est un fichier /dev/dsk, un terminal c'est un fichier /dev/tty, une imprimante c'est un fichier /dev/lp, etc ...
Et tu peux utiliser tes periphs avec les commandes de fichiers. Par exemple :
cat toto > dev/tty0
va te lister le contenu du ficher ...

2) Unix est une orange, avec plein de peaux
Au centre est le noyau (kernel), qui se charge des basses besognes
Et au dessus tu empiles des couches de services, de plus en plus haut niveau. Par exemple les services d'impressions, les services réseau, ... puis les services de plus haut niveau (quicktime, open GL, ..), puis le shell qui est l'interface utilisateur en mode texte (accessoirement qui est sciptable, comme applescript), et puis au dessus dans OS X tu as Aqua

3) Et pour faire marcher tout cela il y a les process. TOUT est process. Les process de bas niveau, ce sont les daemons. Il y en a tout un tas qui se lance tout seuls au démarrage genre celui qui monte les disques, celui qui gére les taches (scheduler), celui qui s'occupe des réseaux, celui qui s'occupe des imprimantes
Et puis après il y a les process qui se lancent quand un user particulier se logge, genre celui qui gère ton interface graphique
Et puis il y a tout ce que tu fais : une commande de terminal, classic, ce sont des process.
Pour les "gros" process, genre une bonne grosse appli, et bien on découpe en process plus petits qui peuvent s'exécuter en parallèle (sur une MP) ou en se partageant les ressoures : les threads

4) A peu près tout est redirigeable dans tout, et tu peux même chainer les commandes en envoyant la sortie de l'une dans l'entrée de la suivante : c'est le pipe (tuyau)

Une fois que tu sais cela, et bien tu commences par te balader dans le système de fichiers (hiérarchique) pour voir comment il est organisé. Tu commences à la racine /, et puis tu te balades dans l'arbre en changent de branche par cd, et quand tu vois des noms qui t'intriguent, tu fais un man du nom
Après cela, tu fait un ps -e dans le terminal, tu regardes les process qui tournent. Et tu fais du man ...

Quand tu fais le man d'un truc, tu vas à la fin, et tu fais un man des commandes connexes que tu vois affichées à la fin de la page.

N'oublie pas de faire un man des différents shells (et oui il y en a plusiers vairantes, pour le fun) : man sh, man csh, man tcsh, etc ...

Après quelques heures de lecture et de balade, tu en sauras plus sur Unix que la plupart des gens.
 
le plus chaint dans les Man, c'est de tout lire
grin.gif


Mais il en sera pas plus que tout ceux qui ont déjà fait tout ca
smile.gif


Ensuite le truc bien pour apprendre le Unix...ben c'est de faire de l'IRC, mais bon c'est surtout valable pour Linux, parce que avec tu va sur des chans genre Linux-FR, linuxfr sur les servers undernet...ben en une heure, t'as appris plein de truc...

------------------
Reporter en direct des inondations
#LittleKid of MacG
 
NeoJF, tu peux aller faire un tour sur http://www.osxfaq.com : tu y trouveras des pages de man réécrites en "langage normal"

locate cron te renvoie la liste des fichiers relatifs : notamment /private/etc/crontab qui contient les actions exécutées par cron

D'ailleurs il est conseillé de le modifier pour que les taches s'exécutent non pas à 5h du mat comme prévu par défaut, mais a des heures ou ta machine a des chances d'etre allumée.
Sinon, ces taches ne seront jamais executées, par ex les logs (journal des opérations, erreurs,etc.) ne seront jamais purgés, et sur un forum quelqu'un en avait d'aussi gros que 1Go, qui avit saturé son Disque dur, il ne pouvait plus rien faire !!
il suffit de modifier (sudo pico /private/etc/crontab ) les trois lignes du type :
15 5 * * * root sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`hostname` daily output" root
(s'exécute à 5h15:a.m.)

en
15 21 * * * root sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`hostname` daily output" root
(s'exécute à 21h15)
keep cool le fichier ne fait que 10 lignes

ces heures étaient concues dans l'optique d'un serveur, tournant 24h/24, et on lui donnait ce boulot non productif aux heures de faible activité...

le shareware Cronnix existe si tu veux automatiser des taches en se servant de cron, mais vec une jolie interface graphique (Mac OsX reste un mac quand même, sus à la ligne de commande dès qu'on peut!) tu le trouveras sur versiontracker.com
 
le cron c'est cool.
Le deamon cron marche sur OS X au démarrage de l'ordi.

Il va chercher effectivement les commandes à effectuer dans un fichier.
Il y a une commande à exécuter : "crontab -e"
qui te permettra d'éditer le fichier en question. Il est conseillé de toujours passer par cette fonction pour éditer ce fichier, les choses pouvant de plus encore bouger.

Ceci va t'ouvrir un fichier avec l'éditeur par défaut en général vi. C'est pas le plus convivial des éditeur mais bon on va essayer de se débrouiller avec.

Pour le format des crontab faire "man 5 crontab" (section 5 du manuel)


Pour insérer dan vi il faut taper "i"
Sur la première ligne il faut indiquer le shell à utiliser pour exécuter les commandes, on tape : "SHELL=/bin/sh" par exemple.
sur la ligne suivante tu vas taper la commande à exécuter avec le format crontab, exemple
5 * * * * echo "coucou"

enfin bref un message niais qui s'affichera à la 5eme minute de toutes les heures de tous les jours de tous les mois.

Pour enregistrer les modifs du fichiers il faut repasser en mode commande vi en tapant esc. Pour quitter en enregistrant on tape ":" et wq.

Et voilà !

Si j'ai pas été clair secouer moi ...
 
D'ailleurs, chaque universite ou presque a sa propre page d'explication des commandes UNIX les plus simples.

En voici une que je m'etais bookmarque ... et je ne l'ai toujours pas lue!

[Ce message a été modifié par Titou (edited 17 Mai 2001).]
 
smile.gif
Merci, merci, merci…
smile.gif
bon je m'arrête là parce que vous allez trouver que j'en fait trop
wink.gif
En tout cas, je suis réellement content de lire vos réponses, je vais enfin pouvoir progresser dans unix.
Voilà, vive le Mac, vive les forums et vive les MacUsers - vive nous quoi !
grin.gif
grin.gif
grin.gif


------------------
NeoJF
G3 300 Beige, MacOS X 10.0.3
"Être Mac ou ne pas Être, telle est la Question."

[Ce message a été modifié par NeoJF (edited 17 Mai 2001).]
 
allez, encore une colle pour les férus d'unix
grin.gif

comment le système gère les shells ?
je m'explique : crontab (/etc/crontab) utilise /bin/sh, les crontab utilisateurs ce qu'ils veulent, les terminaux tcsh par défaut sous OS X…, je sais pas du tout comment tout ça marche sans se casser la gueule !!!
un petit plus, dans le même domaine : quelle est la portée des variables d'environnement ?
voilà, en attendant de nvlles question que ma recherche sur MacOS X me fera vous poser
grin.gif


------------------
NeoJF
G3 300 Beige, MacOS X 10.0.3
"Être Mac ou ne pas Être, telle est la Question."
 
par exemple, pourquoi lorsque je démarre en single user, zsh est utilisé alors que c'est tcsh qui est indiqué dans le fichier passwd, censé être lu justement dans le cas d'un démarrage single user ?

aussi, si qqun réussi à m'expliquer la structure de cette instruction (dans /etc/crontab par défaut) :
sh /etc/monthly 2> &1 | tee /var/log/monthly.out | mail -s "`hostname` monthly output" root

voilà.