Erreur lors de l'ajout de tâches cron dans Mac OS X Lion


37

Jusqu'à présent, je n'ai jamais tenté d'ajouter une crontask sur mon Mac. À ma grande surprise, il a jeté une erreur ..

[hayek@mac:/www/] 02:33:22 PM: crontab -e                                                                                                         1 .
crontab: no crontab for hayek - using an empty one
crontab: "/usr/bin/vi" exited with status 1

Comment puis-je comprendre pourquoi il lance cette erreur?

J'utilise Mac OS X Lion 10.7.2


2
Utilisez-vous cron pour une raison spécifique? Sous OS x, il a été largement remplacé par launchd
Daniel Beck

Je voulais utiliser vnstat pour suivre l'utilisation de la bande passante, ce qui nécessite un cronjob. Je sais que je pourrais utiliser une application alternative, mais il serait toujours utile de savoir comment faire fonctionner cron sur Mac, si possible.
Hayek

1
Avez-vous essayé crontab filed'installer la table à partir d'un fichier externe? Ou en utilisant un éditeur différent comme EDITOR=NANO crontab -e?
Lri

@DanielBeck J'utilise cron car il est beaucoup plus rapide de configurer une nouvelle entrée que launchd.
Doug Harris

Que crontab -lmontre-t-on? Y a-t-il d'autres messages dans /var/log/cron.logou /var/log/system.log?
Doug Harris

Réponses:


41

Dans ~ / .vimrc, ajoutez:

    autocmd filetype crontab setlocal nobackup nowritebackup

super truc simple! fonctionne bien pour moi.
Tri Nguyen

Ceci est la meilleure réponse et fonctionne bien - beaucoup plus simple que celle impliquant la définition d'une variable env dans le profil de shell ainsi que l'édition~/.vimrc
RichVel

Marquer cela comme la bonne réponse car ma propre réponse n'est plus appropriée ni la plus efficace.
Hayek

1
Cela fonctionne aussi dans Mac OS High Sierra! Merci d'avoir posté ceci
Kearney Taaffe

44

Le problème s'est avéré être viet rien à voir avec cron. Faire le export EDITOR=vimfixer


2
Oui, je comprends que vous avez trouvé le problème, et la solution est ... quoi?
Gökhan Barış Aker

3
Essayez de le faire, export EDITOR=vimpuis essayez-le .
Hayek

Merci @Hayek. Désolé pour la latence, je n'ai pas pu répondre aussi rapidement que vous: P. Cependant, exécuter crontab avec le tout-puissant 'sudo' a résolu mon problème.
Gökhan Barış Aker

Heureux que tu es parvenu à le faire fonctionner.
Hayek

1
Je viens d'avoir le même problème. Le réglage EDITOR=vimne l'a pas corrigé - cela m'a juste conduit à une nouvelle erreur crontab: temp file must be edited in place. Je préfère de loin vim, mais je modifie les cronjobs si rarement que je suis assez content de le faire dans NANO... si quelqu'un connaît la solution, je suis très intéressé.
ricardo

35

Sur un problème connexe, si vous obtenez le message:

crontab: temp file must be edited in place

Essayer:

1) Ajoutez à .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Ajouter à .vimrc

if $VIM_CRONTAB == "true"
    set nobackup
    set nowritebackup
endif

Source: http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-place


2
C'est la bonne réponse !!
Jacob

Cela a fonctionné pour moi et je pense que cela devrait être la bonne réponse.
Shubhamoy

1
Pour csh ou tcsh, utilisezalias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
Je pense également que c'est une meilleure réponse bien que la question du PO ne mentionne pas l'erreur exacte @xgMz décrite. crontab ne semble pas aimer la sauvegarde vim sur le comportement d'écriture / sauvegarde, donc la désactiver comme décrit ici fonctionne.
Shyam Habarakada

Je viens d'avoir ce problème avec vim et cron sur macOS Sierra. Ceci est la bonne réponse!
James McCormac


2

J'ai eu le même problème et j'ai suivi les conseils publiés pour créer la table:

crontab file

Et cela a créé la table cron, puis j'ai pu exécuter

crontab -e

avec vi comme éditeur par défaut et n'a eu aucun problème. C'est comme si vi ne pouvait pas enregistrer le fichier, mais une fois créé, il pouvait y accéder. Cela revient à pouvoir exécuter:

sudo crontab -e 

Par curiosité, les tableaux sont stockés dans

/usr/lib/cron/tabs/UserName

qui ne peut être lu que comme sudo.


0

La meilleure façon de diagnostiquer cela serait de créer une nouvelle crontab avec une entrée simple comme:

* * * * * /bin/date >> /tmp/cron_output

Si cela fonctionne, le problème vient de la commande spécifique que vous avez ajoutée. Pourriez-vous le partager avec nous, et également partager les résultats lorsque vous l'exécutez directement à partir de Terminal.app, plutôt qu'à partir d'une crontab?


1
Même erreur avec la commande que vous avez suggérée. Dans le terminal, /bin/dateretourne Wed Nov 23 15:03:49 PST 2011comme prévu.
Hayek

OK, je viens de voir votre réponse, ce qui explique pourquoi vous obtiendriez la même erreur - pensiez simplement que cela pourrait aider à diagnostiquer le problème :)
tog22

0

cron est déconseillé au profit de launchd.

Lingon est un excellent petit outil pour configurer des agents launchd; autrefois gratuit, il semble maintenant être de 3 $.

Wikipedia a une bonne page launchd décrivant toutes les clés et l'outil launchctl que vous utilisez pour les activer / désactiver.



-1

J'ai vu ce même problème sur OSX. La réponse est d'exécuter en tant que root en utilisant la commande sudo, par exemple:

sudo crontab -e

J'ai eu cette idée de Gökhan Barış Aker ci-dessus.


avec sudovous allez placer les tâches cron sous l'utilisateur root. Les fichiers cron sont différents pour votre utilisateur normal et celui racine.
Timofey
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.