33

До сих пор я никогда не пытался добавить crontask на моем Mac. К моему удивлению, это бросило ошибку ..

[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

Как я могу понять, почему выдает эту ошибку?

Я использую Mac OS X Lion 10.7.2

9 ответов9

42

Проблема оказалась vi и никак не связана с cron. Делая export EDITOR=vim исправил

37

В ~/.vimrc добавьте:

    autocmd filetype crontab setlocal nobackup nowritebackup
34

По связанной проблеме, если вы получите сообщение:

crontab: temp file must be edited in place

Пытаться:

1) Добавить в .bash_profile

alias crontab="VIM_CRONTAB=true crontab"

2) Добавить в .vimrc

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

Источник: http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-place

8

Ваш редактор системной переменной EDITOR - это vi, а vi не работает.

Пытаться:

export EDITOR=nano
2

У меня была та же проблема, и я следовал совету по созданию таблицы:

crontab file

И это создало таблицу cron, а затем я смог запустить

crontab -e

с vi в качестве редактора по умолчанию и проблем не было. Как будто vi не может сохранить файл, но после создания он может получить к нему доступ. Это согласуется с возможностью запуска:

sudo crontab -e 

Любопытно, что таблицы хранятся в

/usr/lib/cron/tabs/UserName

который может быть прочитан только как sudo.

0

cron устарел в пользу launchd.

Lingon - отличный маленький инструмент для настройки запускаемых агентов; Раньше он был бесплатным, но теперь кажется, что он стоит 3 доллара.

В Википедии есть хорошая стартовая страница, описывающая все ключи и инструмент launchctl, который вы используете для их активации / деактивации.

0

Добавление au BufEnter /private/tmp/crontab.* setl backupcopy=yes для vimrc исправило это для меня. Посмотреть здесь:

http://vim.wikia.com/wiki/Editing_crontab

0

Лучший способ диагностировать это - создать новый файл crontab с простой записью, например:

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

Если это работает, то проблема связана с конкретной командой, которую вы добавили. Не могли бы вы поделиться с нами, а также поделиться результатами, когда вы выполняете его непосредственно из Terminal.app, а не из crontab?

-1

Я видел эту же проблему на OSX. Ответ заключается в запуске от имени пользователя root с помощью команды sudo, например:

sudo crontab -e

Я получил эту идею от Гекхана Барыша Акера выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .