Cronojob oder ähnliches

S

swizz

Aktives Mitglied
Thread Starter
Dabei seit
15.04.2008
Beiträge
475
Reaktionspunkte
6
Hallo,
ich habe ein einzeiliges Shellscript, dass ich gerne automatisch einmal pro Tag ausführen lassen würde. Ich hatte eigentlich gedacht, dass ich das wie unten mit einem Cronjob machen kann (habe es noch nie gemacht, aber so scheint es eigentlich zu gehen?). Ich bin jetzt irgendwie auf darauf gestossen, dass unter SL nicht mehr cronjobs sond launchd verwendet wird. Leider blicke ich da irgendwie nicht so richtig durch. Ich habe auf der Mannpage geschaut von launchd geschaut, aber da werden die einzelnen Optionen irgendwie nicht so richtig erklärt.

Könnte mir jemand einen Tipp geben, wie ich es hinkriege, dass dieses Skript einmal täglich ausgeführt wird?

Gruß Swizz

Code:
#M    S   T   M  W    Befehl
0     0   *   *  * R CMD BATCH /Users/malte/Documents/gea/gea.r

Edit: Ich stand gerade völlig auf dem schlauch. Wenn ich einfach cronjob skript.sh eingebe, dann scheint es zu klappen. Seh ich das richtig, dass das ganze unter "top" dann als cron angezeigt wird? Wie stell ich sicher, dass der Cronjob auch läuft, wenn ich meinen Mac neu starte?
 
Lad dir mal Lingon (nein, nicht Lion, sondern Lingon, ist kein Schreibfehhler :) ) herunter. Das dürfte genau das sein, wonach Du suchst.
 
Danke für den Tip. Ich hab es glaube ich jetzt mit crontab hinbekommen. Ich denke mal, ich kann ein Shellskript ja einfach in die Anmeldeobjekte packen?

Falls es nicht klappt, werde ich mir Ligon mal anschauen.
 
Probiers aus - eigentlich packt man die in den Ordner /Library/LaunchDaemons
 
Ich habe jetzt einfach ein applscript das den Crontab ausführt als Programm abgespeichert und in die Startobjekte gepackt. Ist vermutlich nicht sehr elegant, aber es erfüllt meine Zwecke.
 
du machst ein applescript um crontab aufzurufen ;)
nein, dass ist nicht wirklich elegant.
crontab ist eh deprecated und durch launchd ersetzt...
 
Stimmt schon, aber jetzt habe ich was ich brauche in 10 Minuten hinbekommen. Wenn ich mich jetzt hingesetzt hätte um launchd zu verstehen und es elegant zu lösen, hätte es vermutlich deutlich länger gedauert. Manchmal bin ich da pragmatisch, falls ich mal kompliziertere Sachen brauche werde ich mich mit launchd auseinandersetzten.
 
Hallo,

ich habe nochmal eine kurze Frage.

Mein Crontab sieht jetzt so aus, leider wird die erste Zeile irgendwie nicht ausgeführt, hat jemand eine Idee, woran das liegen könnte?

Code:
#M    S   T   M  W    Befehl
5     *   *   *  * psql -d gesa -c 'select * from gd;' -U postgres -o /Users/malte/Documents/gesa/daten/gd/gd.csv -A -P null=NA -P footer=off -F ,
10    *   *   *  * R CMD BATCH /Users/malte/Documents/skripte/r/gesa/gewicht.r
15    *   *   *  * R CMD BATCH /Users/malte/Documents/skripte/r/gesa/gewicht_spline.r
20    *   *   *  * R CMD BATCH /Users/malte/Documents/skripte/r/gesa/gea.r
 
man sollte wenn den befehl mit kompletten pfad hinschreiben...
 
Meinst du das allgemein oder aufs crontab bezogen? Außerhalb des Crontabs funktioniert die Befehlszeile nämlich. Ich habe psql glaube ich in den aliases verlinkt, weil ich es zeitweise sehr häufig verwendet habe.
 
außerhalb des crontab hast du auch eine gesetzte PATH variable...
d.h. entweder du definierst im crontab noch PATH oder nimmst halt die vollen pfade für die befehle...
 
  • Gefällt mir
Reaktionen: swizz
ok verstehe, vielen Dank
 
So, dass hab ich auch hinbekommen. Jetzt habe ich noch eine letzte Frage. Gibt es irgendeinen Befehl wie "crontab now" oder sowas, der alle aktuellen Crontabs sofort ausführt, egal, wann sie eigentlich dran wären.

Das wäre super praktisch, weil ich an den Skripten manchmal noch was ändere und es dann direkt ausprobieren könnte, ob alles klappt.
 
cron selber wird über launchd gestartet, du kannst es also mit launchctl machen...
aber noch mal, mach dein vorhaben lieber gleich mit launchd.
mit lingon den job erstellen ist einfacher als den crontab zu bearbeiten...
 
Zurück
Oben Unten