Mac Crontab wird nie erstellt


12

Ich versuche, einen Cron auf meinem Mac einzurichten, aber es scheint, dass die Erstellung eines Crontab für meinen Benutzer nie abgeschlossen ist. Ich öffne das Terminal und gebe ein:

$ crontab -e 

Was dies zurückgibt:

crontab: no crontab for jjmay - using an empty one




















~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/tmp/crontab.rBdeP6yv1U" 0L, 0C

Und dann wartet es dort, bis ich aus dem Fenster schließe, ich habe es so lange wie 20 Minuten losgelassen. Ich öffne ein anderes Terminalfenster, um zu überprüfen, ob mein Crontab erstellt wurde, und erhalte nichts.

$ crontab -l 
crontab: no crontab for jjmay

Irgendwelche Ideen, warum ich das nicht erstellen kann oder ob ich meine Crontab manuell erstellen kann, damit ich sie bearbeiten kann?


Es ist schon eine Weile her, dass ich mit Crontab-Dateien in OS X herumgespielt habe, aber ich vermute, dass dies: "/tmp/crontab.rBdeP6yv1U" 0L, 0C anzeigt, dass Sie entweder nicht im richtigen Verzeichnis sind oder keine Schreibberechtigung haben in dieses Verzeichnis. In welchem ​​Verzeichnis befinden Sie sich, wenn Sie "crontab -e" eingeben? JDB
JDB

@ JDB danke. Ich wusste nicht, dass ich mich in einem bestimmten Verzeichnis befinden musste. Ich befand mich beim Öffnen des Terminals nur in meinem Standardverzeichnis, nur in meinem Standardbenutzerverzeichnis. / Users / <my_username> /
Jage

Antworten:


22

Hier geht es nicht um den Editor, sondern um Benutzerberechtigungen. Zuerst Wurzel werden:

sudo su -

Bearbeiten Sie dann die Crontab für den richtigen Benutzer:

crontab -u username -e

Sie können nach dem Speichern der Datei überprüfen, ob sie ordnungsgemäß gespeichert wurde, indem Sie Folgendes ausführen:

crontab -u username -l

1
Diese Lösung hat bei mir funktioniert. Eine Variante, die überraschenderweise für mich nicht funktionierte, war:sudo crontab -u username -e
Andrew Miner

7

Ich bin gerade auf dieses Problem gestoßen. Beim Versuch, das Problem zu lösen, wurde ich von Google hierher verwiesen. Wie auch immer, hier ist, wie ich es gelöst habe.

benutzen

crontab -e

was du richtig gemacht hast.

Drücken Sie 'i', um Ihren Cronjob einzufügen. Zum Beispiel,

1 * * * * /Users/Wong/Documents/abc.command

~

Denken Sie daran, nach der Zeile die Eingabetaste zu drücken. Wenn Sie nicht die Eingabetaste drücken, wird dies so sein

1 * * * * /Users/Wong/Documents/abc.command

Drücken Sie ESC und geben Sie Folgendes ein: wq, um die Datei zu speichern und zu beenden. Es sollte "crontab: Installation neuer crontab" heißen

Mir wurde klar, dass wenn Sie nach Ihrer Zeile nicht die Eingabetaste drücken, das Ganze nicht gespeichert wird.

Ich hoffe es hilft.


Vielen Dank. Ich ging weiter mit, :q!während Ihre Lösung :wqden ganzen Unterschied machte.
KeitelDOG

1
Herzlich willkommen. :q!Ermöglicht das Beenden ohne Speichern, während beim :wqSchreiben in eine Datei vor dem Beenden geschrieben wird.
Richard Wong

Ich bin mit VIM-Befehlen auf dem Laufenden und weiß jetzt viele Dinge, die ich wissen sollte!
KeitelDOG

1

Durch Schließen des Terminalfensters wird die Crontab nicht gespeichert.

Da die Datei mit vim erstellt wird, lesen Sie, wie Sie VIM verwenden, und gehen Sie von dort aus.

launchd ist die (von Apple) bevorzugte Methode in 10.5 und 10.6, aber Sie haben nicht danach gefragt, wie die Crontab erstellt werden soll.


1

Das angezeigte Fenster ist ein vi-Editor. Auf herkömmlichen Unix-Systemen ist vi der Standardeditor. Es sieht so aus, als ob Mac OS X diese Tradition beibehalten hat.

Stellen Sie die EDITORund VISUALUmgebungsvariablen auf den Namen (vollständigen Pfad, wenn es nicht in ist $PATH) von Ihrem bevorzugten Editor. Z.B

export EDITOR=emacs VISUAL=emacs
crontab -e

Diese Einstellung sollte in Ihre gehen ~/.profile(vorausgesetzt, Mac OS X liest diese Datei beim Anmelden; wenn es eine OSX-Methode zum Definieren von Umgebungsvariablen für eine ganze Sitzung gibt, können Sie sie dort definieren).


0

Es ist meine Lösung: Ändern Sie zuerst Ihren Editor. export EDITOR=vim Ändern autocmd filetype crontab setlocal nobackup nowritebackup Sie dann .vimrc, es wird funktionieren.


Was macht das? Ich jedenfalls wäre sehr vorsichtig, wenn ich Konfigurationsdateien ändern würde, wenn ein anonymer Fremder in der Zwischenzeit sagt, was die Änderungen nicht einmal erklären sollen.
David Richerby

Das tut mir leid. Ich habe dieses Problem schon einmal getroffen, dann google ich es, bekomme diese Methode, aber ich kann den Ursprungsbeitrag nicht finden. Also poste ich einfach diese Methode, sie hat bei mir funktioniert. Und Sie können diese Methode auch googeln, um zu erfahren, warum sie funktioniert? Nächstes Mal werde ich meine Antwort verbessern. Entschuldigung für mein schlechtes Englisch.
Pegasus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.