Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Until now, I have never attempted adding a crontask on my Mac. To my surprise, it threw an error..

[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

How can I figure out why it's throwing that error?

I'm running Mac OS X Lion 10.7.2

share|improve this question
Are you using cron for a specific reason? On OS x it's largely been superseded by launchd – Daniel Beck Nov 20 '11 at 22:48
I wanted to use vnstat to track bandwidth usage, which requires a cronjob. I know I could use an alternative app, but it would still be useful to know how to make cron work on Mac, if at all possible. – Hayek Nov 20 '11 at 23:10
Have you tried crontab file to install the table from an external file? Or using a different editor like EDITOR=NANO crontab -e? – user495470 Nov 21 '11 at 6:22
@DanielBeck I use cron because it's much quicker to set up a new entry than launchd. – Doug Harris Nov 21 '11 at 18:32
What does crontab -l show? Are there any other messages in /var/log/cron.log or /var/log/system.log? – Doug Harris Nov 21 '11 at 18:38
up vote 24 down vote accepted

The issue turned out to be vi and nothing to do with cron. Doing export EDITOR=vim fixed it

share|improve this answer
Yes i understand you found the issue, and the solution is... what? – Gökhan Barış Aker Oct 16 '12 at 14:02
Try doing export EDITOR=vim then giving it a go. – Hayek Oct 16 '12 at 21:56
Thanks @Hayek. Sorry for latency, i couldn't responsed as quickly as you did :P. However, running crontab with the almighty 'sudo' solved my problem. – Gökhan Barış Aker Oct 21 '12 at 6:49
Glad you got it working. – Hayek Oct 21 '12 at 7:36
I have just had the same issue. Setting EDITOR=vim did not fix it -- it just led me to a new error crontab: temp file must be edited in place. I much prefer vim, however i edit cronjobs so infrequently that i'm happy enough doing it in NANO ... though if someone knows the fix, i'm very interested. – ricardo Mar 10 '13 at 5:38

On a related issue, if you get the message:

crontab: temp file must be edited in place


1) Add to .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Add to .vimrc

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


share|improve this answer
This is the correct answer!! – Jacob Sep 3 '14 at 2:09

In ~/.vimrc add:

    autocmd filetype crontab setlocal nobackup nowritebackup
share|improve this answer

Your editor on system variable EDITOR is vi and vi itsn't work.


export EDITOR=nano
share|improve this answer

I had the same problem and followed the advice posted for creating the table:

crontab file

And that created the cron table, and then I was able to run

crontab -e

with vi as the default editor and had no problems. It is as if vi could not save the file, but once created, it could access it. This is consistent with being able to run:

sudo crontab -e 

As a curiosity, the tables are stored in


which can only be read as sudo.

share|improve this answer

The best way to diagnose this would be to create a fresh crontab with a simple entry like:

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

If that works then the issue is with the specific command you've added. Could you share it with us, and also share the results when you execute it directly from, rather than from a crontab?

share|improve this answer
Same error with the command you suggested. In terminal, /bin/date returns Wed Nov 23 15:03:49 PST 2011 as expected. – Hayek Nov 23 '11 at 23:04
OK, just seen your answer, which explains why you'd get the same error - just thought it might help to diagnose the problem :) – tog22 Nov 24 '11 at 11:55

cron is deprecated in favour of launchd.

Lingon is a great little tool for setting up launchd agents; it used to be free but appears to now be $3.

Wikipedia has a good launchd page describing all the keys and the launchctl tool you use to activate/deactivate them.

share|improve this answer

I saw this same issue on OSX. The answer is to run as root using the sudo command, e.g.:

sudo crontab -e

I got that idea from Gökhan Barış Aker above.

share|improve this answer
with sudo you are going to place cron jobs under root user. The cron files are different for your normal user and the root one. – Tim Sep 6 '15 at 0:30

Adding au BufEnter /private/tmp/crontab.* setl backupcopy=yes to vimrc fixed it for me. See here:

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .