我尝试将Bamboo代理设置为systemd服务。服务文件如下所示:
[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被正确设置为我期望的值,唯一的例外是我的PATH前面加上/bin
。
cat /proc/12345/environ <--- 12345 is my Bamboo PID
...
PATH=/bin:/opt/rh/devtoolset-3/root/bin/:/usr/local/bin:/usr/bin
...
这意味着我的构建将使用错误的gcc
,cmake
等
有没有办法阻止/bin
加在PATH之前?
答案 0 :(得分:3)
我创建了一个测试服务,在使用新路径设置Environment=
之后打印出路径,并发现它在Ubuntu 16.04上使用systemd 229按预期工作。
我的结论是,您的脚本中的某些内容已预先挂起/ bin到您的环境中。
systemd.exec
手册页中没有任何内容表明systemd的设计行为与您观察的方式相同。