Job einmalig, zeitgesteuert starten

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Hallo,

ich möchte mit MacOS 10.5 Jobs anlegen können, die einmalig zu einer gegebenen Zeit gestartet werden.

Es soll ein PERL-Skript mit einem übergebenen Parameter gestartet werden können.
Die Jobs müssen aus einem anderen Skript heraus geplant werden können -> commandline.

Ich habe es mit "at" versucht, scheint aber deaktivert zu sein. Aktivieren konnte ich es nicht.
Schöner wäre es natürlich, falls das ganze über launchd realisierbar wäre.

Ich hoffe ihr könnt mir weiterhelfen :)

Viele Grüße
Julian
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Danke für deine Antwort.
Geht das auch "schöner" ?

Zur Auswahl stehen ja eigentlich cron, at, launchd.

Ich stelle die Fragen mal etwas konkreter:

1) Kann launchd einmalige Jobs planen ?
2) Wie kann man at aktivieren ?

Grüße
 

vierundvierzig

Weisser Rosenapfel
Registriert
30.08.07
Beiträge
794
Kleines Tutorial auch für dich "Pii", siehe Anhang. Bitte in Zukunft Deine Beiträge ändern und nicht jedesmal einen neuen hinzufügen. Macht es einfach übersichtlicher :)
 

Anhänge

  • Picture 1.png
    Picture 1.png
    5,9 KB · Aufrufe: 120

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
ich kenne sämtliche manuals.
ich kenne lingon.

Dennoch brauche ich eine Möglichkeit einen job über die commandline zu planen.

Sprich:

<jobplanner> <time> <script> <scriptparameter>

Kann launchd das oder geht das nur über launchd.plist files?


//edit: ich habe at aktiviert und kann den daemon nun nutzen. Zur not werde ich es über at lösen
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

at wird dir über kurz oder lang bei einem Update von Apple um die Ohren fliegen. Und wenn Du man lanuchd und lingon und meinen o.g. Artikel kennen würdest, wüßtest Du auch wie launchd läuft und würdest nicht fragen.

In einem - wahlfrei zu benennenden - .plist-File für launcd werden die Aufrufparameter reingeschrieben und von launchd anhand der dort ebenfalls gesetzten Parameter ausgeführt.

Gruß Stefan
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
nicht gleich pampig werden.
Aber hättest du meinen Beitrag gelesen wüsstest du, dass ich kein plist file anlegen will und kann.

ich bin durchaus in der lage eine launchd.plist zu basteln und auch mit launchctl zu laden.. (auch ohne lingon) :D

allerdings ist ein plist nicht die lösung, da die jobs zu unterschiedlichen zeiten ausgeführt werden sollen und immer andere parameter übergeben werden.

Der genaue Ablauf
Ein Skript liest eine Datenbank aus. In der Datenbank steht Zeit und der zu übergebende Parameter.
Danach soll zu genau dieser Zeit, wie sie in der Datenbank steht ein Job geplant werden. Der Job soll immer das gleiche Skript ausführen allerdings mit dem Parameter aus der Datenbank.
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

dann laß doch das perl-script das .plist-File schreiben und loaden. Wo ist das Problem?

Gruß Stefan
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Hallo,

plist:
1)schreiben
2)loaden
3)ausführen
4)löschen (falls nicht überschwemm ich den ordner)

ist nicht das schönste aber den weg hatte ich mir aber auch erdacht.. gefällt mir zwar nicht sonderlich aber naja
 

nowies

Niederhelfenschwiler Beeriapfel
Registriert
01.05.07
Beiträge
854
Moin,

unter Tiger konnte/kann man AT mit :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
aktivieren.

Ob es unter Leo noch so ist,wäre ja mal einen Versuch wert.
(greift aber indirekt ins Powermanagement ein,da cron AT jede Minute einmal abfragt)

Es gibt noch " sleep" : sleep $WarteZeit; $Befehl

(Ich habe natürlich keine Ahnung,wie deine Datenbank aufgebaut ist....)

nowies
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Hallo,

ja genauso habe ich es dann auch geschafft at zu aktivieren.

Danke :)

Falls es keine schöne Alternative zu at gibt werde ich diesen Befehl nutzen.
Den Weg über launchd halte ich für unschön.

Grüße
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Ok, sehe ich ein. Werde den Daemon auch nun in /Library/LaunchDaemons kopieren und von dort aus starten.

Dennoch komme ich anscheinend für mein Problem um at nicht drumherum oder?

Viele Grüße und Danke für Eure Hilfe
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Denkbar wäre auch, über launchd jede Stunde ein Skript zu starten, das die Datenbank abfragt, welche Ergeignisse für diese Stunde geplant sind, und diese dann per "at" zu starten.
Launchd ist eher für periodische Aufgaben und Ereignissteuerung geeignet und nicht unbedingt als Datenbank mit Einzel-Terminen.
 

MX-Julian

Golden Delicious
Registriert
11.12.08
Beiträge
8
Genau das ist der Weg den ich gehe.
Das Skript wird über launchd (StartInterval gestartet) , allerdings nicht nur jede Stunde :)
at startet dann ebenfalls ein Skript. Ist mitlerweile voll funktionsfähig. Also Danke an alle die mir helfen konnten.

Danke Für die Bestätigung Mark!
 
  • Like
Reaktionen: MacMark