Wie setze ich die Umgebungsvariable im Vorstart im Upstart-Skript?

9

Wir haben eine benutzerdefinierte C ++ - Daemon-Anwendung, die einmal funktioniert. Also haben wir das in unserem Upstart-Skript unter Ubuntu 12.04 gemacht und es funktioniert perfekt:

%Vor%

Aber jetzt müssen wir unserer App ein Argument übergeben, das die Anzahl der CPUs auf dem Rechner enthält, auf dem es läuft:

%Vor%

Unser erster Versuch war das:

%Vor%

Während das unsere App mit dem richtigen -t-Wert startet, verfolgt Upstart den falschen pid-Wert, ich nehme an, weil diese Katze, grep & amp; wc befiehlt alle Startprozesse in exec vor unserer App.

Ich habe das auch versucht, und sogar es funktioniert nicht, ich schätze, weil das Setzen einer env var einen Prozess ausführt? Upstart verfolgt immer noch die falsche PID:

%Vor%

Ich habe auch versucht, dies in einer env-Zeilengruppe zu tun, aber anscheinend führen diese keine Befehle aus:

%Vor%

Dies wurde auch im Vorstart versucht, aber env vars, die dort gesetzt sind, haben keine Werte in der Zeilengruppe exec:

%Vor%

Haben Sie eine Idee, wie Sie diese NUM_CORES richtig setzen und trotzdem Upstart bekommen, um die richtige PID für unsere App zu finden, die einmal funktioniert?

    
Zach 26.09.2012, 21:01
quelle

3 Antworten

16

Es ist peinlich. Die empfohlene Methode besteht darin, in der Zeilengruppe vor dem Start eine env-Datei zu schreiben und sie dann in der Skriptzeilengruppe anzugeben. Es ist lächerlich, ich weiß.

%Vor%

Ich benutze die exec-Zeile im Pre-Start, weil ich normalerweise mehrere env-Variablen habe und den Umleitungscode nicht wiederholen möchte.

Das funktioniert nur, weil die '. 'Befehl ist ein eingebauter Bindestrich und daher wird kein Prozess erzeugt.

    
mpm 29.09.2012, 03:23
quelle
2

Gemäß der Upstart-Konfiguration von zram-config:

%Vor%     
Fan Xu 30.05.2013 08:53
quelle
0

Ich würde hinzufügen

%Vor%

nachdem Sie ihm einen Wert in "script" zugewiesen haben. Ich erinnere mich, dass ein / bin / sh, der mit einer Nicht-Bash-Shell verknüpft ist, Skripte ausführen kann, sodass ich nur Bash-Konstrukte vermeiden würde.

Re: Mit der Zeilengruppe "env" werden Werte buchstäblich übergeben und nicht mit Shell-Konventionen verarbeitet.

    
eel ghEEz 19.02.2013 18:45
quelle