2010-10-05 3 views
12

Ich habe einen Linux-Dienst erstellt, der als Deamon läuft (und von /etc/init.d/X gestartet wird). Ich muss einige Umgebungsvariablen festlegen, auf die die Anwendung zugreifen kann.Wie kann ich Umgebungsvariablen in meinem Linux-Dienst für Asterisk setzen, obwohl es keinen echten Benutzer hat?

Hier ist das Szenario. Die Anwendung besteht aus einer Reihe von Perl AGI-Skripten, die von einem asterisk-Benutzer abhängen (und daher als as ausgeführt werden müssen), aber asterisk hat keine Shell. Im Idealfall würde ich dies nur in /home/asterisk/.bashrc setzen, aber das ist nicht für asterisk vorhanden.

Wie kann ich Umgebungsvariablen für meine App in der laufenden Umgebung des Stern-Benutzers festlegen, damit meine App sie verwenden kann?

Antwort

20

Entweder setzen sie im Startskript (/etc/init.d/yourdaemon) oder eine Zeile in dieser Datei setzen, die wie folgt aussieht:

. /etc/yourdaemon.env 

und setzen die Umgebungsvariablen in der Datei, mit der Syntax export VAR=value. Auf Red-Hat-ähnlichen Systemen glaube ich, dass der richtige Ort für eine solche Datei /etc/sysconfig ist. Debian/Ubuntu scheint zu diesem Zweck /etc/default zu haben.

+0

Versuchte diesen Ansatz. Das Problem dabei ist, dass '/etc/init.d/yourdaemon' als root ausgeführt wird und daher nicht für mein Skript verfügbar ist, das als Sternchen läuft. – domino

+0

Wie wechseln Sie die Benutzer? –

+0

start-stop-daemon --start --chuid = $ USER --exec $ DAEMON. Dies führt die App als $ USER – domino

Verwandte Themen