Edition avec crontab

takamac

Membre actif
26 Octobre 2001
165
6
Bonjour,


J'ai fait un petit AppleScript pour lancer la musique d'une playlist d'itunes en aléatoire.
Ensuite, je fais lancer ce script par crontab.

Le but est de faire réveil en musique via Borne Express :love:

Le problème, c'est que c'est pas pour moi, et que pour régler l'heure dans le fichier crontab (crontab -e), il faut se taper du vi, ce qui est assez rebutant pour un non-informaticien :rose:

Quand on fait "man crontab", on lit "Edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables."
Ca veut dire quoi ? Y a-t-i lmoyen de remplacer vi par autre chose ?

Thanks.
 
quand j'ai modifié la table du cron pour changer l'heure d'exécution des scripts de maintenance, je l'avais fait avec l'éditeur de texte pico (sous terminal)
 
r e m y a dit:
quand j'ai modifié la table du cron pour changer l'heure d'exécution des scripts de maintenance, je l'avais fait avec l'éditeur de texte pico (sous terminal)

Quand j'ai voulu modifier le fichier cron (crontab -e) le terminal m'a lancé vi sur un fichier temporaire. J'en ai déduit que c'était une protection et qu'Apple ne voulait pas qu'on édite directement le vrai fichier, pour des raisons de sécurité sans doute.

Appparemment, tu n'as pas eu ce probème :confused:

Peux-tu me dire comment tu modifies le fichier cron stp ? Peut-être qu'il y a plusieurs fichiers cron d'ailleurs...

Merci :)
 
Terminal

cd /private/etc
sudo pico crontab

ensuite tu modifies,
puis Ctrl O pour enregistrer
Ctrl X pour quitter pico

NB: au préalable il est prudent de faire une copie du crontab initial en commençant par un
sudo cp crontab crontab.old

comme ça en cas de pb tu reviens au fichier initial par
sudo cp crontab.old crontab
 
Merci remy pour ta réponse.

Si je comprends bien, ta solution change le fichier crontab système, alors que je changeais celui lié à mon user.
Le premier est en clair, bien que protégé (il faut passer par sudo). Les fichiers users, quant à eux, sont cryptés et il faut passer explicitement par la commande crontab proprement dite.

Tu penses que c'est ça ?

Dans les 2 cas, aucune solution ne me convient vraiment, car j'aimerais que ce soit simple à modifier (par quelqu'un de non-informaticien). Taper le mot de passe root, c'est dangereux, et passer par vi, c'est galère. Je suis preneur si quelqu'un a des suggestions.

Thanks.
 
Hello,

Plusieurs solutions à ton problème :
1) Tu utilises vi ;) C'est pas si compliqué que ca. Tu tapes donc crontab -e sous ton user, inutile d'etre en root, puis quand tu es dans vi (effectivement tu edites un fichier temporaire, c'est le fonctionnement normal de cron) :
- i -> pour inserer du texte et ECHAP quand tu as terminé
- :x -> pour sauvegarder (tu peux aussi faire :wq)
- a -> rajouter du texte à la suite

2) Tu préfères utiliser emacs, par ex. Toujours en console :
- EDITOR=emacs crontab -e

3) Tu préfères éditer le fichier via TextEdit ou ton éditeur graphique préféré :
- Tu génères un fichier texte nommé par ex macron.txt avec la ligne de cron qui va bien
- Sous ton user, dans terminal, tu tapes crontab /LE/CHEMIN/macron.txt

Pour vérifier :
crontab -l (liste les crons)
crontab -r (efface la cron)

Voilà. En espérant avoir répondu à ta question !

A+
 
Bonjour,

Bon, j'ai un petit probleme.

Je veut lancer un script perl toutes les 15 minutes.

J'ai cree une commande cron :
# Execute each 15 minutes
*/15 * * * * perl test.pl

Que j'ai ajouté à la cronlist, ce que confirme crontab -l

Mais rien n'est appelé. Il faut lancer cron "a la main", ou il est lancé par defaut ?
J'ai un probleme dans la syntaxe de ma commande ?
J'ai aussi essayé :

*/15 * * * * echo "test"
ou
*/1 * * * * echo "toutes les minutes"

Toute aide est bienvenue..

Cordialement
 
kabutop a dit:
Hello,

Plusieurs solutions à ton problème :
1) Tu utilises vi ;) C'est pas si compliqué que ca. Tu tapes donc crontab -e sous ton user, inutile d'etre en root, puis quand tu es dans vi (effectivement tu edites un fichier temporaire, c'est le fonctionnement normal de cron) :
- i -> pour inserer du texte et ECHAP quand tu as terminé
- :x -> pour sauvegarder (tu peux aussi faire :wq)
- a -> rajouter du texte à la suite

2) Tu préfères utiliser emacs, par ex. Toujours en console :
- EDITOR=emacs crontab -e

3) Tu préfères éditer le fichier via TextEdit ou ton éditeur graphique préféré :
- Tu génères un fichier texte nommé par ex macron.txt avec la ligne de cron qui va bien
- Sous ton user, dans terminal, tu tapes crontab /LE/CHEMIN/macron.txt

Pour vérifier :
crontab -l (liste les crons)
crontab -r (efface la cron)

Voilà. En espérant avoir répondu à ta question !

A+


Merci kabutop pour cette super-réponse. :up:
Comme c'est pas moi qui vais modifier le fichier, je vais conseiller la solution 3)

Pour Didier Guillion, quelque chose comme cela doit fonctionner :
0,15,30,45 * *....
 
Didier Guillion a dit:
Bonjour,
Il faut lancer cron "a la main", ou il est lancé par defaut ?
cron est un daemon, rien à relancer.

Essaye de le lancer à une heure fixe aussi :
0 16 * * * echo "coincoin" > /tmp/test_cron.log

Il faudra alors vérifier test_cron.log.

Si ca ne marche toujours pas, essaye le coup de la ligne blanche après la dernière ligne de cron (c'est un vieux bug, je sais pas si ca existe sous darwin ;) )

A+
 
kabutop a dit:
cron est un daemon, rien à relancer.

Essaye de le lancer à une heure fixe aussi :
0 16 * * * echo "coincoin" > /tmp/test_cron.log

Il faudra alors vérifier test_cron.log.

Si ca ne marche toujours pas, essaye le coup de la ligne blanche après la dernière ligne de cron (c'est un vieux bug, je sais pas si ca existe sous darwin ;) )

A+

Merci de tes conseils, de toute facon s'était pour faire tourner sur mon serveur Unix (debian), cela marche parfaitement dessus, je n'ai pas reussit sur Mac OS X, mais ce n'est pas grave.


Cordialement