Mac crontab n'est jamais créé

12

J'essaie de configurer un cron sur mon mac, mais il semble qu'il ne finisse jamais de créer un crontab pour mon utilisateur. J'ouvre le terminal et entre:

$ crontab -e 

Ce qui renvoie ceci:

crontab: no crontab for jjmay - using an empty one




















~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/tmp/crontab.rBdeP6yv1U" 0L, 0C

Et puis il attend là jusqu'à ce que je ferme par la fenêtre, je l'ai laissé aller aussi longtemps que 20min. J'ouvre une autre fenêtre de terminal pour vérifier la création de ma crontab et je n'obtiens rien.

$ crontab -l 
crontab: no crontab for jjmay

Avez-vous des idées sur la raison pour laquelle je ne peux pas créer cela, ou si je peux créer manuellement mon crontab pour pouvoir le modifier?

Jage
la source
Cela fait un moment que je n'ai pas joué avec les fichiers crontab dans OS X, mais je suppose que ceci: "/tmp/crontab.rBdeP6yv1U" 0L, 0C indique que vous n'êtes pas dans le bon répertoire ou que vous n'avez pas les autorisations pour écrire dans ce répertoire. Quel est le répertoire dans lequel vous vous trouvez lorsque vous tapez "crontab -e"? JDB
JDB
@JDB merci. Je ne savais pas que je devrais être dans un répertoire spécifique. J'étais juste dans mon répertoire par défaut lorsque j'ai ouvert le terminal, juste mon répertoire utilisateur par défaut. / Users / <my_username> /
Jage

Réponses:

22

Il ne s'agit pas de l'éditeur, il s'agit des autorisations des utilisateurs. Devenez d'abord root:

sudo su -

Modifiez ensuite la crontab pour l'utilisateur approprié:

crontab -u username -e

Après avoir enregistré le fichier, vous pouvez vérifier qu'il a été enregistré correctement en exécutant ceci:

crontab -u username -l
plateformes
la source
1
Cette solution a fonctionné pour moi. Une variante qui, étonnamment, n'a pas fonctionné pour moi était:sudo crontab -u username -e
Andrew Miner
7

J'ai rencontré ce problème tout à l'heure. Tout en essayant de résoudre le problème, j'ai été référé ici par Google. Quoi qu'il en soit, voici comment je l'ai résolu.

utilisation

crontab -e

que vous avez bien fait.

Appuyez sur «i» pour insérer votre cronjob. Par exemple,

1 * * * * /Users/Wong/Documents/abc.command

~

N'oubliez pas d'appuyer sur Retour après la ligne. Si vous n'appuyez pas sur retour, ce sera comme ça

1 * * * * /Users/Wong/Documents/abc.command

Appuyez sur ÉCHAP et tapez: wq pour enregistrer et quitter le fichier. Il devrait indiquer "crontab: installation d'un nouveau crontab"

J'ai réalisé que si vous n'appuyez pas sur Retour après votre ligne, cela ne sauvera pas le tout.

J'espère que cela aide.

Richard Wong
la source
Merci. J'ai continué à sortir avec :q!pendant que votre solution :wqfaisait toute la différence.
KeitelDOG
1
Bienvenue. :q!vous permet de quitter sans enregistrer pendant l' :wqécriture dans le fichier avant de quitter.
Richard Wong
Je rattrape les commandes VIM, alors maintenant je sais beaucoup de choses que je devais savoir!
KeitelDOG
1

La fermeture de la fenêtre du terminal ne fera pas enregistrer la crontab.

Puisqu'il utilise vim pour créer le fichier, cherchez comment utiliser VIM et allez-y.

launchd est la méthode préférée (Apple) en 10.5 et 10.6, mais vous n'avez pas demandé à ce sujet, juste comment créer le crontab.

eric.s
la source
1

La fenêtre qui s'affiche est un éditeur vi. Sur les systèmes Unix traditionnels, vi est l'éditeur par défaut; il semble que Mac OS X ait gardé cette tradition.

Définissez les variables d'environnement EDITORet VISUALsur le nom (chemin complet, si ce n'est pas le cas $PATH) de votre éditeur préféré. Par exemple

export EDITOR=emacs VISUAL=emacs
crontab -e

Ce paramètre doit entrer dans votre ~/.profile(en supposant que Mac OS X lit ce fichier lorsque vous vous connectez; s'il existe un moyen OSX de définir des variables d'environnement pour une session entière, vous pouvez les définir là-bas).

Gilles 'SO- arrête d'être méchant'
la source
0

C'est ma solution: modifiez d'abord votre éditeur. export EDITOR=vim puis modifiez .vimrc autocmd filetype crontab setlocal nobackup nowritebackup cela fonctionnera.

Pégase
la source
Qu'est-ce que cela fait? Pour ma part, je me méfierais beaucoup de la modification des fichiers de configuration sur le prétexte d'un inconnu anonyme sur le sujet qui n'explique même pas ce que les changements sont censés faire.
David Richerby
Désolé pour ça. J'ai déjà rencontré ce problème, puis je recherche sur google cette méthode, mais je ne trouve pas le message d'origine. Je viens donc de poster cette méthode, cela a fonctionné pour moi. Et vous pouvez également google cette méthode pour savoir pourquoi cela fonctionne? La prochaine fois, j'améliorerai ma réponse. Désolé pour mon mauvais anglais.
Pegasus