Ich möchte Cron auf meinem Mac verwenden. Ich entscheide mich dafür launchd
, weil ich mein neues Wissen auch unter Linux nutzen möchte. Ich kann den crontab -e
Befehl jedoch nicht zum Laufen bringen . Es wird ausgelöst, ich gebe meinen Testjob ein:
0-59 * * * * mollerhoj3 echo "Hello World"
Aber nach dem Speichern und Beenden ( :wq
),
crontab -l
sagt:
No crontab for mollerhoj3
Was mache ich falsch?
crontab: installing new crontab
auf dem Terminal ausgedruckt?crontab: no crontab for mollerhoj3
und die DYLD_- Nachricht:set backupcopy=yes
. Mein MacVim funktioniert aus diesem Grund nicht mit Crontab, aber ich habe es gesehen, weil sich Crontab nach dem Speichern beschwert hat :crontab: temp file must be edited in place
.Antworten:
Befolgen Sie einfach diese Schritte:
crontab -e
.Geben Sie Ihren Cron-Job ein, zum Beispiel:
Drücken Sie Escden Eingabemodus der Ausgang vim.
crontab: installing new crontab
. Sie können die crontab-Datei mithilfe von überprüfencrontab -l
.Beachten Sie jedoch, dass dies je nach Inhalt Ihrer
~/.vimrc
Datei möglicherweise nicht funktioniert .quelle
export EDITOR=nano
:x
, weniger Charakter :)Ich hatte dieses Problem noch nie, aber ich erstelle eine ~ / .crontab-Datei und bearbeite diese (wodurch ich sie sichern kann, Time Machine oder auf andere Weise) und führe sie dann aus
Hat über 20 Jahre für mich in vielen Unix-Varianten gearbeitet.
quelle
crontab ~/.crontab
Installiert einfach die Anweisungen in der Datei. Es kann absolut alles benannt werden und es wird "funktionieren", abercrontab -e
niemals bearbeiten~/.crontab
oder welche Datei auch immer Sie ausgewählt haben. lesenman crontab
. Sie können sogar löschen~/crontab
und Ihre Cron läuft einwandfrei.HINWEIS : Die Antwort, die besagt, dass der
ZZ
Befehl verwendet werden soll, funktioniert auf meinem Mavericks-System nicht, aber dies liegt wahrscheinlich an etwas in meiner vim-Konfiguration, da.vimrc
die akzeptierte Antwort funktioniert, wenn ich mit einer makellosen Antwort beginne . Meine Antwort könnte für Sie funktionieren, wenn die andere Lösung dies nicht tut.Unter MacOS X muss laut der Crontab-Manpage die temporäre Crontab-Datei, mit der erstellt wird
crontab -e
, direkt bearbeitet werden. Vim wird standardmäßig nicht direkt bearbeitet ( dies kann jedoch in besonderen Fällen unterstützt werdencrontab -e
). Wenn Ihre$EDITOR
Umgebungsvariable auf "vi
Standard" oder "Standard" eingestellt istvim
, schlägt die Bearbeitung der Crontab immer fehl.Damit Vim die Datei direkt bearbeitet, müssen Sie Folgendes tun:
Dies sollte es Ihnen ermöglichen, die crontab zu aktualisieren, wenn Sie
crontab -e
mit den Befehlen:wq
oder arbeitenZZ
.Sie können Ihrem .vimrc einen automatischen Befehl hinzufügen, damit dies beim Bearbeiten von crontabs automatisch funktioniert:
Eine andere Möglichkeit ist das Hinzufügen von
setlocal nowritebackup
to~/.vim/after/ftplugin/crontab.vim
, das von Vim automatisch geladen wird, wenn Sie eine Crontab-Datei bearbeiten, wenn Sie das Dateityp-Plugin aktiviert haben. Sie können auch nach dem Betriebssystem suchen, wenn Sie Ihre VIM-Dateien auf mehreren Plattformen verwenden:quelle
crontab: "/usr/bin/vi" exited with status 1
vi
auf geändert habevim
. Ich dachte immer, beide wären gleich.Von der Verwendung von cron unter OS X wird abgeraten.
launchd
wird stattdessen verwendet. Versuchen Sieman launchctl
, loszulegen. Sie müssen spezielle XML-Dateien erstellen, die Ihre Jobs definieren, und diese mit bestimmten Berechtigungen an einem bestimmten Ort ablegen.Normalerweise müssen Sie nur herausfinden
launchctl load
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/launchctl.1.html
http://nb.nathanamy.org/2012/07/schedule-jobs-using-launchd/
Bearbeiten
Wenn Sie cron wirklich unter OS X verwenden möchten, lesen Sie die folgende Antwort: https://superuser.com/a/243944/2449
quelle
Ich habe zwei Dinge getan, um dieses Problem zu lösen.
EDITOR=emacs crontab -e
(Ich habe keine Ahnung, warum Vim nicht funktioniert.)crontab -l
druckt jetzt die cronjobs. Jetzt muss ich nur noch herausfinden, warum die Cronjobs immer noch nicht laufen ;-)quelle
crontab -e
, das ist sehr praktisch zu wissencrontab: installing new crontab
Nachricht erhalten), aber Jobs wurden nicht ausgeführt.sudo touch /etc/crontab
arbeitete für mich an Mavericks ..Unterschied zwischen cron und launchd
Wie bereits erwähnt, ist cron veraltet (wird jedoch unterstützt), und launchd wird für OS X empfohlen.
Dies ist aus entnommen developer.apple.com übernommen
Auswirkungen des Schlafens und Ausschaltens
Wenn das System ausgeschaltet ist oder schläft, werden Cron-Jobs nicht ausgeführt. Sie werden erst ausgeführt, wenn die nächste festgelegte Zeit erreicht ist.
Wenn Sie einen gestarteten Job durch Setzen des StartCalendarInterval-Schlüssels planen und der Computer schläft, wenn der Job hätte ausgeführt werden sollen, wird Ihr Job ausgeführt, wenn der Computer aufwacht. Wenn der Computer jedoch ausgeschaltet ist, wenn der Job ausgeführt werden sollte, wird der Job erst ausgeführt, wenn die nächste festgelegte Zeit eintritt.
Alle anderen gestarteten Jobs werden übersprungen, wenn der Computer ausgeschaltet ist oder schläft. Sie werden erst ausgeführt, wenn die nächste festgelegte Zeit erreicht ist.
Wenn der Computer zum geplanten Zeitpunkt des Jobs immer ausgeschaltet ist, werden daher sowohl Cron-Jobs als auch Launchd-Jobs nie ausgeführt. Wenn Sie beispielsweise Ihren Computer nachts immer ausschalten, wird ein Job, der um 1 Uhr morgens ausgeführt werden soll, niemals ausgeführt.
quelle
Fügen Sie in user crontab (
crontab -e
) das Benutzerfeld nicht ein.Richtige Cron ist:
Die Syntax mit Benutzerfeld gilt
/etc/crontab
nur für :quelle
Der Fehler
crontab: temp file must be edited in place
ist auf die Art und Weise zurückzuführen, wie vim Sicherungsdateien behandelt.Um vim mit cron zu verwenden, fügen Sie die folgenden Zeilen in Ihr .bash_profile ein
export EDITOR=vim
alias crontab="VIM_CRONTAB=true crontab"
Quelle der Datei:
source .bash_profile
Und dann fügen Sie in Ihrer .vimrc hinzu:
if $VIM_CRONTAB == "true" set nobackup set nowritebackup endif
Dadurch werden Sicherungen deaktiviert, wenn vim mit cron verwendet wird. Und Sie können damit
crontab -e
Cronjobs hinzufügen / bearbeiten.Wenn Sie Ihren Cronjob erfolgreich gespeichert haben, wird folgende Meldung angezeigt:
crontab: installing new crontab
Quelle:
http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-place Geben Sie hier die Linkbeschreibung ein
quelle
Da die vorherigen Beiträge aufgrund einiger Berechtigungsprobleme bei mir nicht funktionierten, stellte ich fest, dass das Erstellen einer separaten Crontab-Datei und das Hinzufügen zur Crontab-Datei des Benutzers mit dem Parameter -u, während root für mich funktionierte.
quelle
Das Obige hat eine Mischung aus richtigen Antworten. Was für mich funktioniert hat, um genau die gleichen Fehler zu haben, sind:
1) Bearbeiten Sie Ihre Bash-Konfigurationsdatei
2) Stellen Sie in Ihrer Bash-Konfigurationsdatei sicher, dass der Standardeditor vim und nicht vi ist (was das Problem verursacht).
3) Bearbeiten Sie Ihre vim-Konfigurationsdatei
4) Stellen Sie sicher, dass die gesetzte Sicherungskopie in Ihrer .vimrc Ja ist
5) Terminal neu starten
6) Versuchen Sie nun Crontab Edit
Sie sollten sehen, dass die Crontab-Datei korrekt erstellt wird. Wenn Sie vim (entweder ZZ oder: wq) beenden und crontab mit dem folgenden Befehl auflisten; Sie sollten den neuen Cron-Job sehen. Hoffe das hilft.
quelle
Eine andere Option ist, überhaupt nicht zu verwenden
crontab -e
. Stattdessen habe ich verwendet:Beachten Sie, dass alles, was Sie zuvor gedruckt
| crontab -
haben, die gesamte Crontab-Datei ersetzt. Verwenden Sie diese Option,crontab -l && echo "<your new schedule>"
um den vorherigen Inhalt und den neuen Zeitplan abzurufen.quelle
Verwenden Sie einen anderen Texteditor
oder
quelle