2016-09-19 11 views
0

Ich versuche, meine Bambus-Agenten als systemd Dienst einrichten. Die Service-Datei sieht wie folgt aus:systemd Prepending/bin Umwelt PATH

[Unit] 
Description=Atlassian Bamboo Agent 
After=syslog.target network.target 

[Service] 
Type=forking 
User=bamboo 
Group=bamboo 
ExecStart=/opt/bamboo-1/bin/bamboo-agent.sh start 
ExecStop=/opt/bamboo-1/bin/bamboo-agent.sh stop 
Environment="PATH=/opt/rh/devtoolset-3/root/bin/:/usr/local/bin:/usr/bin" 

[Install] 
WantedBy=multi-user.target 

Wenn ich die Prozessumgebung überprüfen, wird der Pfad richtig eingestellt, was ich erwarten, mit der einzigen Ausnahme, dass mein PATH vorangestellt mit /bin.

cat /proc/12345/environ <--- 12345 is my Bamboo PID 
... 
PATH=/bin:/opt/rh/devtoolset-3/root/bin/:/usr/local/bin:/usr/bin 
... 

Das ist mein bedeutet baut verwendet das falsche gcc, cmake usw.

Gibt es eine Möglichkeit /bin zu verhindern, um den Pfad vorangestellt?

Antwort

3

Ich habe einen Test-Service, Environment= nach nur den Pfad ausgedruckt mit einem neuen Pfad einstellen, und fand es auf Ubuntu 16.04 mit systemd 229.

ich prä- den Schluss, dass etwas in Ihrem Skript wie erwartet gearbeitet ist pending/bin in Ihrer Umgebung

Nichts in der systemd.exec Manpage legt nahe, dass systemd entwickelt, um die Art und Weise Sie beobachten, verhalten.

+1

Sie haben Recht: Bambus-Startskript ein '$ JAVA_HOME/bin' zum' PATH' wurde hinzugefügt. Da 'JAVA_HOME' nicht gesetzt war, wurde '/ bin' angehängt. Also habe ich das gelöst, indem ich der Service-Konfiguration die richtige 'Environment'-Zeile hinzugefügt habe, um' JAVA_HOME' zu setzen. – Xabs