2016-09-19 101 views
0

我试图将我的Bamboo代理安装为systemd服务。该服务文件是这样的:systemd prepending/bin到环境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 

当我检查的过程中环境,路径是正确设置为我所期望的,与我的PATH被换成了/bin唯一的例外。

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

这意味着我的构建将使用错误的gcccmake

有什么办法来防止/bin被前置到路径?

回答

3

我创建了刚刚打印出来的路径与新路径设置Environment=后的测试服务,并发现229

我的结论是什么在你的脚本前它工作在Ubuntu 16.04作为有望与systemd挂起/ bin到您的环境。

systemd.exec手册页中没有任何内容表明systemd的设计目的与您的观察方式相同。

+1

你是对的:Bamboo启动脚本正在为'PATH'添加'$ JAVA_HOME/bin'。由于'JAVA_HOME'没有设置,它实际上是在附加'/ bin'。所以我通过在服务配置中添加适当的'Environment'行来设置'JAVA_HOME'来解决这个问题。 – Xabs