Mac OS X Lion'da cronjobs eklerken hata


37

Şimdiye kadar, Mac'ime crontask eklemeyi hiç denemedim. Sürprizime göre, bir hata attı ..

[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

Neden bu hatayı attığını nasıl öğrenebilirim?

Mac OS X Lion 10.7.2 kullanıyorum


2
Belirli bir nedenden dolayı cron kullanıyor musunuz? OS'de büyük ölçüde launchd yerini oldu x
— Daniel Beck

Bir cronjob gerektiren bant genişliği kullanımını izlemek için vnstat kullanmak istedim. Alternatif bir uygulama kullanabileceğimi biliyorum, ancak eğer mümkünse Mac'te cron'un nasıl çalışacağını bilmek faydalı olacaktır.
— Hayek

1
crontab fileTabloyu harici bir dosyadan yüklemeye çalıştınız mı ? Veya farklı bir editör kullanarak EDITOR=NANO crontab -e?
— Lri

@DanielBeck cron kullanıyorum çünkü piyasaya sürülmekten daha yeni bir giriş yapmak çok daha hızlı.
— Doug Harris,

Ne crontab -lgösterir? İçinde başka mesaj var /var/log/cron.logmı /var/log/system.log?
— Doug Harris

Yanıtlar:


41

~ / .Vimrc ekle:

    autocmd filetype crontab setlocal nobackup nowritebackup

Büyük basit numara! benim için iyi çalışıyor.
— Tri Nguyen,

Bu en iyi cevaptır ve iyi çalışır - kabuk profilinde bir env değişkeni ayarlamanın yanı sıra düzenlemeyi ~/.vimrc
— içeren sonuçtan daha basittir

Bunu doğru cevap olarak işaretlemek, çünkü kendi cevabım artık uygun ya da en etkili değil.
— Hayek

1
Bu Mac OS High Sierra'da da çalışıyor! Bunu gönderdiğiniz için teşekkür ederiz
— Kearney Taaffe

44

Sorun ortaya çıktı vive cron ile ilgisi yoktu. Bunu export EDITOR=vimdüzeltmek


2
Evet, sorunu bulduğunuzu anlıyorum ve çözüm şudur: ne?
— Gökhan Barış Aker

3
Yapmayı deneyin, export EDITOR=vimsonra bir deneyin .
— Hayek

@Hayek'e teşekkürler. Geciktiğim için üzgünüm, sizin kadar çabuk cevap veremedim: P. Ancak, kudretli 'sudo' ile crontab'ı çalıştırmak sorunumu çözdü.
— Gökhan Barış Aker

Çalışmana sevindim.
— Hayek

1
Ben de aynı sorunu yaşadım. Ayar EDITOR=vimsorunu çözmedi - sadece yeni bir hataya yol açtı crontab: temp file must be edited in place. Vim'i çok tercih ederim, ancak cronjobs'u o kadar nadiren düzenlerim ki, bunu yaparken yeterince mutlu oluyorum NANO... ancak biri düzeltmeyi biliyorsa çok ilgileniyorum.
— ricardo

35

İlgili bir konuda, mesajı alırsanız:

crontab: temp file must be edited in place

Deneyin:

1) .bash_profile dosyasına ekle

alias crontab="VIM_CRONTAB=true crontab"

2) .vimrc'ye ekle

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

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


2
Bu doğru cevap!!
— Jacob

Bu benim için çalıştı ve bunun doğru cevap olması gerektiğini düşünüyorum.
— Shubhamoy

1
alias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
— Csh

1
Ayrıca OP'nin sorusu @xgMz'de açıklanan hatayı tam olarak belirtmese de, bunun daha iyi bir cevap olduğunu düşünüyorum. crontab, yazma / kaydetme davranışındaki vim yedeğini görünmüyor, bu yüzden burada açıklandığı şekilde devre dışı bırakmak sadece çalışıyor.
— Shyam Habarakada

MacOS Sierra'daki vim ve cron ile bu sorunu daha yeni yaşadım. Bu doğru cevap!
— James McCormac,


2

Aynı sorunu yaşadım ve masayı oluşturmak için verilen tavsiyelere uydum:

crontab file

Ve bu cron masasını yarattı ve sonra kaçabildim

crontab -e

varsayılan düzenleyici olarak vi ile ve hiç problem yaşamadım. Vi dosyayı kaydedemedi, ancak bir kez oluşturulmuşsa erişebiliyor. Bu, çalışabilmekle tutarlıdır:

sudo crontab -e 

Bir merak olarak, tablolar içinde saklanır

/usr/lib/cron/tabs/UserName

sadece sudo olarak okunabilir.


0

Bunu teşhis etmenin en iyi yolu, basit bir girişle yeni bir crontab oluşturmaktır:

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

Bu işe yararsa sorun, eklediğiniz komutla ilgilidir. Bunu bizimle paylaşıp sonuçları bir crontab yerine doğrudan Terminal.app'den çalıştırdığınızda sonuçları paylaşır mısınız?


1
Önerdiğiniz komutla aynı hata. Terminalde beklendiği gibi /bin/datedöner Wed Nov 23 15:03:49 PST 2011.
— Hayek

Tamam, cevabınızı yeni gördüm, bu da neden aynı hatayı alacağınızı açıklıyor - sadece sorunun teşhisine yardımcı olabileceğini düşündüm :)
— tog22

0

cron fırlatma lehine kaldırıldı.

Lingon , piyasaya sürülen aracıları ayarlamak için harika bir araçtır; Eskiden bedavaydı ama şimdi 3 dolar gibi görünüyor.

Wikipedia'da tüm anahtarları ve onları etkinleştirmek / devre dışı bırakmak için kullandığınız launchctl aracını tanımlayan iyi bir başlatma sayfası vardır.



-1

Aynı sorunu OSX'te de gördüm. Cevap, sudo komutunu kullanarak root olarak çalışmaktır, örneğin:

sudo crontab -e

Bu fikri yukarıda Gökhan Barış Aker'den aldım.


ile sudokök kullanıcı altında yer cron işleri için gidiyoruz. Cron dosyaları normal kullanıcılar ve root dosyaları için farklıdır.
— Timofey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.