Fehler beim Hinzufügen von Cronjobs in Mac OS X Lion

37

Bis jetzt habe ich noch nie versucht, einen Crontask auf meinem Mac hinzuzufügen. Zu meiner Überraschung warf es einen Fehler ..

[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

Wie kann ich herausfinden, warum es diesen Fehler auslöst?

Ich verwende Mac OS X Lion 10.7.2

Hayek
quelle
2
Verwenden Sie Cron aus einem bestimmten Grund? Unter OS X wurde es durch launchd weitgehend abgelöst
Daniel Beck
Ich wollte vnstat verwenden, um die Bandbreitennutzung zu verfolgen, für die ein Cronjob erforderlich ist. Ich weiß, dass ich eine alternative App verwenden könnte, aber es wäre trotzdem nützlich zu wissen, wie man Cron auf einem Mac zum Laufen bringt, wenn dies überhaupt möglich ist.
Hayek
1
Haben Sie versucht crontab file, die Tabelle von einer externen Datei zu installieren? Oder mit einem anderen Editor wie EDITOR=NANO crontab -e?
Lri
@DanielBeck Ich verwende cron, weil es viel schneller ist, einen neuen Eintrag einzurichten als launchd.
Doug Harris
Was crontab -lzeigt? Gibt es noch andere Nachrichten in /var/log/cron.logoder /var/log/system.log?
Doug Harris

Antworten:

41

In ~ / .vimrc hinzufügen:

    autocmd Dateityp crontab setlocal nobackup nowritebackup
user442586
quelle
Toller einfacher Trick! funktioniert gut für mich.
Tri Nguyen
Dies ist die beste Antwort und funktioniert gut - viel einfacher als das Festlegen einer env-Variablen im Shell-Profil und das Bearbeiten~/.vimrc
RichVel
Dies als die richtige Antwort zu markieren, da meine eigene Antwort weder angemessen noch am effektivsten ist.
Hayek
1
Dies funktioniert auch unter Mac OS High Sierra! Vielen Dank, dass Sie dies gepostet haben
Kearney Taaffe
43

Das Problem stellte sich heraus viund hatte nichts mit cron zu tun. Tun export EDITOR=vimreparierte es

Hayek
quelle
2
Ja, ich verstehe, Sie haben das Problem gefunden und die Lösung ist ... was?
Gökhan Barış Aker
3
Probieren Sie es aus export EDITOR=vimund probieren Sie es aus.
Hayek
Vielen Dank @ Hayek. Entschuldigung für die Latenz, ich konnte nicht so schnell antworten wie Sie: P. Crontab mit dem allmächtigen 'sudo' zu starten, löste jedoch mein Problem.
Gökhan Barış Aker
Ich bin froh, dass du es geschafft hast.
Hayek
1
Ich hatte gerade das gleiche Problem. Die Einstellung EDITOR=vimhat das Problem nicht behoben - es hat mich nur zu einem neuen Fehler geführt crontab: temp file must be edited in place. Ich bevorzuge Vim, aber ich bearbeite Cronjobs so selten, dass ich glücklich genug bin, es zu tun NANO... obwohl wenn jemand das Update kennt, ich sehr interessiert bin.
Ricardo
35

Wenn Sie zu einem verwandten Thema die folgende Nachricht erhalten:

crontab: temp file must be edited in place

Versuchen:

1) Fügen Sie .bash_profile hinzu

alias crontab="VIM_CRONTAB=true crontab"

2) Zu .vimrc hinzufügen

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

Quelle: http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-inplace

xgMz
quelle
2
Das ist die richtige Antwort !!
Jacob
Das hat bei mir funktioniert und ich denke, das sollte die richtige Antwort sein.
Shubhamoy
1
Verwenden alias crontab "export VIM_CRONTAB=true; /usr/bin/crontab"
Sie
1
Ich denke auch, dass dies eine bessere Antwort ist, obwohl in der Frage des OP der genaue beschriebene Fehler @xgMz nicht erwähnt wird. crontab scheint das Verhalten von vim backup beim Schreiben / Speichern nicht zu mögen, daher funktioniert das Deaktivieren wie hier beschrieben.
Shyam Habarakada
Ich hatte gerade dieses Problem mit vim und cron auf macOS Sierra. Das ist die richtige Antwort!
James McCormac
8

Ihr Editor auf Systemvariablen - Editor ist vi und vi itsn't Arbeit.

Versuchen:

export EDITOR=nano
Abdel Karim Mateos Sanchez
quelle
2

Ich hatte das gleiche Problem und befolgte die Anweisungen zum Erstellen der Tabelle:

crontab file

Und so entstand der Cron-Tisch, und dann konnte ich rennen

crontab -e

mit vi als standard editor und hatte keine probleme. Es ist, als ob vi die Datei nicht speichern könnte, aber sobald sie erstellt wurde, könnte es darauf zugreifen. Dies steht im Einklang mit der Fähigkeit, Folgendes auszuführen:

sudo crontab -e 

Kurioserweise werden die Tabellen in gespeichert

/usr/lib/cron/tabs/UserName

die kann nur als sudo gelesen werden.

user214155
quelle
0

Die beste Möglichkeit, dies zu diagnostizieren, ist die Erstellung einer neuen Crontab mit einem einfachen Eintrag wie:

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

Wenn das funktioniert, liegt das Problem bei dem speziellen Befehl, den Sie hinzugefügt haben. Könnten Sie es mit uns teilen und die Ergebnisse auch teilen, wenn Sie es direkt von Terminal.app ausführen, anstatt von einer Crontab?

tog22
quelle
1
Gleicher Fehler mit dem von Ihnen vorgeschlagenen Befehl. In Terminal, /bin/datekehrt Wed Nov 23 15:03:49 PST 2011wie erwartet.
Hayek
OK, habe gerade Ihre Antwort gesehen, die erklärt, warum derselbe Fehler
auftritt
0

cron ist zugunsten von launchd veraltet.

Lingon ist ein großartiges kleines Tool zum Einrichten von Startagenten. Früher war es kostenlos, aber jetzt scheint es 3 $ zu sein.

Wikipedia hat eine gute launchd Seite beschreibt alle Schlüssel und die launchctl Werkzeug , das Sie zu aktivieren verwenden , um / deaktivieren sie.

chrish
quelle
-1

Ich habe dasselbe Problem unter OSX gesehen. Die Antwort lautet, dass Sie mit dem Befehl sudo als root ausgeführt werden, z.

sudo crontab -e

Ich habe diese Idee von Gökhan Barış Aker oben.

Nathan Beach
quelle
mit sudoplatzieren sie cron jobs unter root user. Die Cron-Dateien unterscheiden sich für Ihren normalen und den Root-Benutzer.
Timofey