Um ein Node – Script als ein Deamon auszuführen, ist nur ein Startscript nötig.
Als Beispiel wird ein Node Script zum Starten einer „Homematic“-Komponente „ccu.io.js“ auf einem Mac-Server dargestellt.
Voraussetzungen:
- Hier wird davon ausgegangen das Node Funktionsfähig Installiert ist.
- In diesem Fall ist die CCU.IO-Komponente, im Verzeichnis /opt, ebenfalls funktionsfähig installiert.
- Sollte hier ein User die Komponente CCU.IO starten wollen, dann bitte auch entsprechende Lese und Schreibrechte in dem Verzeichnis setzen.
- Sollte ein Script mit Root-Rechten angesprochen werden, ist ebenfalls ein Rootzugriff oder ein Eintrag in der Sudo-Liste erforderlich
- Ein Root-zugriff ist bei Komponenten erforderlich, welche in die Systemeigenen Log-Verzeichnisse schreiben möchten.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>de.homematic.ccuio</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>/opt/ccu.io/ccu.io-server.js</string> <string>start</string> </array> <key>WorkingDirectory</key> <string>/opt/ccu.io</string> <key>StandardOutPath</key> <string>/opt/log/ccu.io.log</string> <key>StandardErrorPath</key> <string>/opt/log/ccu.io.log</string> <key>KeepAlive</key> <true/> </dict> </plist>
Die Startscriptvorlage wurde in diesen Beispieln unter /Users/Stephan/Desktop mit dem Name ccuio.plist gespeichert.
Prolog
Zuerst muss Überlegt werden wann das Script gestartet werden soll und mit welchen Rechten.
Sollte es ausreichen, das dieses Script gestartet wird wenn sich ein Benutzt am PC anmeldet, dann kann im nachfolgenden bei dem Eintrag „User-Startscript“ weiter gearbeitet werden.
Sollte das Script aber mit Root-Rechten oder bei einem Start des PC ausgeführt werden dann ist beim Eintrag „Root-Startscript“ weiter zu arbeiten.
User-Startscript
Bei jeder Anmeldung des Users wird das Startskript automatisch ausgeführt.
Kopiere eine existierende plist aus dem User-Verzeichnis in das LaunchAgents Verzeichnis des Users. (Beachte auch am Ende des Beitrags die Verzeichniserklärung).
cp /Users/Stephan/Desktop/ccuio.plist ~/Library/LaunchAgents/ccuio.plist
Laden des Scripts
launchctl load ~/Library/LaunchAgents/ccuio.plist
Sarte das Script
launchctl start de.homematic.ccuio
Root-Startscript
Für nachfolgende Aktionen in einem Terminal ist ein Sudo (mit Adminpasswort) erforderlich.
Kopiere eine existierende plist aus dem User-Verzeichnis in das LaunchAgents Verzeichnis. (Beachte auch am Ende des Beitrags die Verzeichniserklärung)
sudo cp /Users/Stephan/Desktop/ccuio.plist /Library/LaunchAgents/ccuio.plist
Ändere den Besitzer auf root
sudo chown root /Library/LaunchAgents/ccuio.plist
Passe die Dateirechte an.
sudo chmod 644 /Library/LaunchAgents/ccuio.plist
Lade das Script
sudo launchctl load /Library/LaunchAgents/ccuio.plist
Sarte das Script
sudo launchctl start de.homematic.ccuio
Zusätze
Stopt das Script (User-Script)
launchctl stop de.homematic.ccuio
Stopt das Script (Root-Script)
sudo launchctl stop de.homematic.ccuio
Entläd das Script (User-Script)
launchctl unload ~/Library/LaunchAgents/ccuio.plist
Entläd das Script (Root-Script)
sudo launchctl unload /Library/LaunchAgents/ccuio.plist
Anzeigen einer Liste, was alles unter „homematic“ im launchd eingetragen ist.
sudo launchctl list |grep homematic
Testen was alles unter einem CCU.IO läuft
ps -ef|grep ccu.io
Verzeichniserklärung
~/Library/LaunchAgents ……….→ Userskript, wird ausgeführt, wenn sich $USER anmeldet. Owner = $USER
/Library/LaunchAgents ………. → Wird bei jedem User bei der Anmeldung ausgeführt. Owner = root
/Library/LaunchDaemons ……… → Wird beim Systemstart ausgeführt. Owner = root
/System/Library/LaunchAgents … → Sollte nicht verwendet werden!
/System/Library/LaunchDaemons .. → Sollte nicht verwendet werden!