Помилка додавання cronjobs у Mac OS X Lion


37

До цих пір я ніколи не намагався додати 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


2
Ви використовуєте cron з певної причини? На OS x його значною мірою витіснив запуск
Daniel Beck

Я хотів використати vnstat для відстеження використання пропускної здатності, для чого потрібна робота без обмежень. Я знаю, що я міг би використати альтернативну програму, але все-таки було б корисно знати, як змусити cron працювати на Mac, якщо це можливо.
Хайєк

1
Ви намагалися crontab fileвстановити таблицю із зовнішнього файлу? Або використовуєте інший редактор, як-от EDITOR=NANO crontab -e?
Лрі

@DanielBeck Я використовую cron, тому що набагато швидше налаштувати новий запис, ніж запускати.
Дуг Гарріс

Що crontab -lпоказує? Чи є якісь інші повідомлення в /var/log/cron.logабо /var/log/system.log?
Дуг Харріс

Відповіді:


41

У ~ / .vimrc додати:

    autocmd filetype crontab setlocal nobackup nowritebackup

чудовий простий трюк! добре працює для мене.
Tri Nguyen

Це найкраща відповідь і працює добре - набагато простіше, ніж те, що передбачає встановлення змінної env у профілі оболонки, а також редагування~/.vimrc
RichVel

Позначення це правильною відповіддю, оскільки моя власна відповідь більше не підходить і не є найбільш ефективною.
Хайєк

1
Це працює і в Mac OS High Sierra! Дякуємо за повідомлення про це
Kearney Taaffe

44

Проблема виявилася viі не має нічого спільного з кроном. Виправляючи export EDITOR=vimце


2
Так, я розумію, ви знайшли проблему, і рішення ... що?
Gökhan Barış Aker

3
Спробуйте це зробити, export EDITOR=vimтоді дайте йому піти.
Хайєк

Дякую @Hayek Вибачте за затримку, я не зміг відповісти так швидко, як ви: P. Однак запуск кронтабу з всемогутнім «судо» вирішив мою проблему.
Gökhan Barış Aker

Радий, що ти це працює.
Хайєк

1
У мене щойно виникло те саме питання. Налаштування EDITOR=vimне виправило - це просто призвело до нової помилки crontab: temp file must be edited in place. Я дуже віддаю перевагу vim, однак я редагую обкладинки настільки рідко, що я досить щасливий, що роблю це NANO... хоча якщо хтось знає виправлення, я дуже зацікавлений.
Рікардо

35

Якщо пов'язане питання, якщо ви отримаєте повідомлення:

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


2
Це правильна відповідь !!
Яків

Це працювало для мене, і я вважаю, що це має бути правильною відповіддю.
Шубхамой

1
Для csh або tcsh використовуйтеalias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
JAFaucett

1
Я також вважаю, що це краща відповідь, хоча запитання від ОП не згадує точну описану помилку @xgMz. Crontab, схоже, не любить резервну копію vim у поведінці запису / збереження, тому його відключення, як описано тут, просто працює.
Шям Хабаракада

У мене щойно виникла ця проблема з vim та cron на macOS Sierra. Це правильна відповідь!
Джеймс Маккормак


2

У мене була та сама проблема, і я дотримувався порад, створених для створення таблиці:

crontab file

І це створило таблицю cron, і тоді я зміг бігти

crontab -e

з vi як редактором за замовчуванням і не мав проблем. Це як би vi не міг зберегти файл, але колись він створив, він міг отримати доступ до нього. Це відповідає можливості запуску:

sudo crontab -e 

Як цікавість, таблиці зберігаються в

/usr/lib/cron/tabs/UserName

яку можна читати лише як судо.


0

Найкращий спосіб діагностувати це - створити свіжий кронтаб з простим записом, як-от:

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

Якщо це працює, тоді проблема полягає в конкретній команді, яку ви додали. Не могли б ви поділитися цим з нами, а також поділитися результатами, коли виконуватимете його безпосередньо з Terminal.app, а не з crontab?


1
Така ж помилка з запропонованою вами командою. У терміналі /bin/dateповертається Wed Nov 23 15:03:49 PST 2011як очікувалося.
Хайєк

Гаразд, щойно побачила вашу відповідь, яка пояснює, чому ви отримаєте ту саму помилку - просто думав, що це може допомогти діагностувати проблему :)
tog22

0

cron застарілий на користь запуску.

Лінгон - це чудовий маленький інструмент для налаштування запущених агентів; він раніше був безкоштовним, але, здається, зараз становить 3 долари.

У Вікіпедії є хороша сторінка запуску з описом всіх клавіш та інструмента запуска, який ви використовуєте для їх активації / деактивації.



-1

Я бачив цю саму проблему на OSX. Відповідь - запустити як root за допомогою команди sudo, наприклад:

sudo crontab -e

Цю ідею я отримав від Гьохана Бариша Акера вище.


з sudoви збираєтеся на роботу , місце хрон під суперкористувача. Файли cron відрізняються як для вашого звичайного користувача, так і для кореневого.
Тимофей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.