使用 systemd 配置简单服务

使用 systemd 配置简单服务

我们正在使用 Bamboo 服务器与正在构建我们的项目的远程代理持续集成。这些代理可以使用简单的 shell 脚本启动(效果很好)。但我想我会进一步移动它并使其成为systemd一个单元,这将使代理在启动后自动启动,并且允许人们通过systemctl命令启动/停止它。这就是我尝试过的

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

[Service]
Type=forking
User=shub
Group=shub
ExecStart=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh start
ExecStop=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh stop

[Install]
WantedBy=multi-user.target

比我做过的还要多systemctl daemon-reload。问题是代理在重新启动后没有启动,而且它的行为很奇怪(在某种程度上服务会不时重新启动或在之后无法正常启动systemctl start)。那么我做错了什么?我考虑过更改Type为,simple但我希望代理作为后台服务运行(并且脚本本身在执行后在后台运行代理)。

答案1

你问了多个问题。我将回答这个问题:“为什么我的自定义 systemd 服务没有在启动时启动?”

答案是因为你还没有已启用它。当您运行时systemctl enable my-service-name[Install]单元文件中的块将被执行。

在这种情况下,您已指示 systemd 在到达multi-user.target.

运行enable命令将创建一个符号链接,/etc/systemd/system/multi-user.target.wants/并且该符号链接的存在将实际指示systemd在引导时启动服务。

我建议将您的“行为怪异”评论变成一个单独的问题,其中提供了更多详细信息,也许包含来自 systemd 日志的有关正在发生的事情的详细信息。 (检查journalctl输出)。

相关内容