dienste bei systemstart starten

quinte17

Mitglied
Thread Starter
Dabei seit
20.09.2005
Beiträge
21
Reaktionspunkte
0
hallo allerseits!
ich habe hier nun schon danach gesucht, aber nichts gefunden was mir geholfen hätte..

ich möchte einen dienst bei systemstart starten, ohne dass ich mich mit einem user anmelden muss.
ich habe zwar schon versucht des mit launchd zu machen, und auch schon so einen editor ausprobiert, der solche *.plist dateien erstellen kann, aber leider wurde mein dienst nicht gestartet.
am einfachsten wäre es für mich, wenn ich am start ein bash-script ausführen lassen kann, und beim beenden ein 2. script läuft.

gibt es unter mac kein pendant zu den init-scripts unter linux?

schonmal danke für jeden hinweis!

greetz
 
mit Lingon geht das viel einfacher als mit manuellem .plist-editieren. Viel Spaß! :D
 
funktoiniert trotzdem noch nicht... gibt es irgendwo logdateien, die mir irgendwelche fehler bringen?
ich müsste folgende zeile zum starten eintippen (in der konsole funktionierts):
Code:
/bin/bash -c "/Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserverd start -c /Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserver.conf"

aber leider nicht mit launchd...

greetz
 
so, ich habe mich nun erstmal damit abgefunden, den dienst per cron zu starten und zu beenden, dies funktioniert wenigstens...
aber warum will des über launchd nicht? weiß da einer rat?

wäre schön wenn mir mal einer ein beispiel zeigen könnte

greetz
 
poste deine plist und dir kann geholfen werden...
vielleicht hast du den unterschied zwischen program und programarguments nicht verstanden usw ;)
 
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>fmserver</string>
	<key>ProgramArguments</key>
	<array>
		<string>/bin/bash</string>
		<string>-l</string>
		<string>-c</string>
		<string>"/Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserverd start -c /Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserver.conf"</string>
	</array>
</dict>
</plist>

eigentlich ist des ganze ja recht verständlich, aber er will einfach nicht starten...
 
dein ProgramArguments ist doch vollkommen blödsinnig...
warum willst du ein bash starten um ein programm zu starten?

Code:
	<key>Program</key> <string>/Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserverd</string>
	<key>ProgramArguments</key>
	<array>
		<string>start</string>
		<string>-c /Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserver.conf</string>
	</array>
      <key>RunAtLoad</key>
       <true/>
 
so nun habe ich des angepasst:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>fmserver</string>
	<key>Program</key>
	<string>/Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserverd</string>
	<key>ProgramArguments</key>
	<array>
		<string>start</string>
		<string>-c /Applications/FileMaker/FileMaker\ Server\ 5.52/FileMaker\ Server\ Config.app/Contents/Resources/fmserver.conf</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>
leider startet dieser immernoch nicht.
des einzige ist nun, dass wenigstens in der console.log folgendes kommt:
Code:
May 24 17:16:15 Grafik-CAD launchd: fmserver: execve(): No such file or directory
May 24 17:16:25 Grafik-CAD launchd: fmserver: execve(): No such file or directory
May 24 17:17:45 Grafik-CAD launchd: fmserver: execve(): No such file or directory
May 24 17:17:59 Grafik-CAD launchd: fmserver: execve(): No such file or directory
 
Du kannst dir auch einfach ein
Startup-Item basteln, dass ist
recht einfach, hier ein Artikel
dazu.

KA, wie's bei dir mit Englisch aus-
sieht, im Zweifelsfall poste ich noch
eine kurze Zusammenfassung.
 
quinte17 schrieb:
leider startet dieser immernoch nicht.
des einzige ist nun, dass wenigstens in der console.log folgendes kommt:
Code:
May 24 17:16:15 Grafik-CAD launchd: fmserver: execve(): No such file or directory

stimmen denn die pfade zum executable? scheint ja so als würde der die nicht finden...
mach doch vielleicht mal ein paar symlinks in /usr/local/bin für fmserverd und /usr/local/etc für das conf file, dann braucht man die ellenlange pfade nicht mehr...
 
Seid Ihr sicher, dass man die Blanks escapen muss?
 
@moses: danke für den link, ich versuche ja effektiv nichts anderes zu machen.. ich will ja eigentlich des mit einem plist-file hinbekommen

@oneoeight: ja die pfade stimmen, arbeite an dieser stelle immer mit copy&paste. wenn ich den befehl ins terminal paste, dann funnktioniert des auch ohne probleme

@maceis: habe beides schon ausprobiert.. mit und ohne blanks. leider kommt ohne blanks auch kein eintrag in den log-files :(

trotzdem danke für eure hilfe!

greetz
 
Das Gleiche? Na ja, StartupItems sind einfacher, und du kannst
dir den ganzen Kram mit der .plist-Datei sparen. IMHO sind die
StartupItems die exakten Darwin-Pendants deiner init-Scripte :)
 
Zuletzt bearbeitet:
ja du hast recht :)
des sieht besser aus. hatte den artikel nur kurz überflogen, und dort auch nur wieder plist gelesen...
die startupitems sehen wirklich vielversprechend aus!

danke für den tip!

greetz
 
Man sollte nur darauf vorbereitet sein, dass StartupItems irgendwann nicht mehr unterstützt werden.
 
schade eigentlich... ist es in zukunft so geplant, dass die alles über ihre "komischen" plist dinger machen wollen?

greetz
 
Wenn man sich einmal etwas intensiver mit launchd beschäftigt, merkt man recht schnell, wie komfortabel und leistungsfähig dieses Konzept ist.

Ich möchte hier nur mal ein Beispiel bringen.
Ein StartupItem wird beim Booten ausgeführt, und das war's.
Wenn ein Daemon z.B. nicht gestartet werden kann oder nach einiger Zeit ungewollt beendet wird, ist das halt so.
launchd dagegen kontrolliert, ob der Damon auch wirklich gestartet wurde und danach, ob der Daemon am Leben bleibt. Wenn der z.B. nach drei Tagen abstürzt, wird er von lanchd wieder gestartet.
 
Zurück
Oben Unten