Es sieht so aus, als hätten Sie das -f
Flag (Vordergrund) aus dem ProgramArguments
Array ausgelassen . Ohne dies wird der naviserver im Hintergrund erneut ausgeführt und dann beendet. Dies bedeutet, dass launchd die PID des (im Hintergrund befindlichen) Serverprozesses nicht kennt.
launchctl startet das Programm, listet jedoch keine pid auf
Ich habe dieses Problem seit einiger Zeit behoben. Im Internet konsultiert, mehrere Stackexchange-Plattformen und Diskussionsforen. Hier ist meine Problembeschreibung:
Anwendungsfall:
Ich habe Naviserver auf einem Mac os x el capitan 10.11.6 installiert
Anstatt zu rufen
/usr/local/ns/bin/nsd -f -u nsadmin -g nsadmin -t /usr/local/ns/conf/nsd-config.tcl
Um den Server zu starten, und einen Kill-Befehl, um den Server zu stoppen, möchte ich ihn über ein LaunchDaemon verwalten.
Problembeschreibung:
Ich kann ein LaunchDaemon erfolgreich starten launchctl
. Beim Betrachten der launchctl
Liste wird jedoch die Liste ohne PID angezeigt. Ich muss also den Dienst manuell über beenden kill
- stattdessen möchte ich den Dienst mit beenden können launchctl stop
.
Frage im Wesentlichen:
Warum listet launchctl nicht die PID des erfolgreich gestarteten LaunchDaemon auf?
Was ich bisher ausprobiert habe
- Ändern der Plist-Datei, Minimieren von Parametern, kein KeepAlive, kein OnDemand, Programmparameter
- Eigentümerrechte ändern admin: wheel nsadmin: nsadmin admin: root
- Wird als LaunchAgent über das Verzeichnis / Library / LaunchAgents ausgeführt
Folgendes habe ich getan:
Ich habe folgende plist unter /Library/LaunchDaemons/org.naviserver.dev01.plist
<?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>org.naviserver.dev01</string> <key>ProgramArguments</key> <array> <string>/usr/local/ns/bin/nsd</string> <string>-u</string> <string>nsadmin</string> <string>-g</string> <string>nsadmin</string> <string>-t</string> <string>/usr/local/ns/conf/nsd-config.tcl</string> </array> <key>StandardOutPath</key> <string>/usr/local/var/log/naviserver_daemon.log</string> <key>StandardErrorPath</key> <string>/usr/local/var/log/naviserver_daemon.log</string> </dict> </plist>
Es gelten die folgenden Privilegien und Eigentumsrechte
-rw-r--r-- 1 root admin 857 Aug 11 15:03 org.naviserver.dev01.plist
Starten des Service funktioniert
sudo launchctl load org.naviserver.dev01.plist sudo launchctl start org.naviserver.dev01
Die launchctl-Liste zeigt jedoch nicht die PID des Dienstes an
sudo launchctl list | grep naviserver - 0 org.naviserver.dev01
Ich kann den laufenden Prozess über finden
ps -ax | grep nsd
Momentan starte ich den Server immer manuell über eine kill
PID neu, was nicht schön ist. Ich möchte das schaffen, launchctl
indem man den Prozess startet, aber nicht mit dem Anhalten.
Ist jemand anderes auf dieses Problem gestoßen und ist irgendetwas offensichtlich falsch an meinem Ansatz, das ich ändern kann, um dieses Problem zu lösen?
1 Antwort auf die Frage
Verwandte Probleme
-
3
Beschleunigung der Bootzeiten von OS X bei einem Jahr alten MBP
-
3
Wie ordnen Sie ein Airport Time Machine-Backup nach der Migration auf einen neuen Mac wieder zu?
-
6
Wie können Sie den Startton auf einem Mac stummschalten?
-
5
Warum wird mein Macbook bei der Verwendung von Boot Camp extrem heiß?
-
7
Gibt es unter Mac OS X ein Strg + Tab-Äquivalent?
-
6
Weg, um Time Machine-Daten auf eine neue Festplatte zu migrieren
-
13
Setzen Sie die Windows-Position von Mac OS X nach dem Abnehmen des externen Monitors zurück
-
10
Sicherungssoftware für Mac OS X
-
5
Wie kann ich unter Mac OS X einen .kext deinstallieren und entfernen?
-
4
Wie kann ich die Auswurftaste auf der MacBook-Tastatur erneut "löschen"?