systemd 服务不会在引导/重新启动时启动

systemd 服务不会在引导/重新启动时启动

我真的很疯狂地试图弄清楚为什么我的 systemd 服务不会在启动时启动,或者每当相关的 ruby​​ 脚本失败时(就像我的意图应该做什么)。我在 EC2 Ubuntu 实例上运行它。

这是该服务的代码:

[Unit]
Description=Test

[Service]
User=ubuntu
Type=simple
ExecStart=/usr/bin/ruby /home/ubuntu/main/test.rb
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target

我尝试更改目标、用户名或类型...什么也没有发生。该杂志没有给我任何具体信息。如果我启动该服务,它就会顺利运行。

但如果脚本失败,或者每当我杀死它来测试它时,它就会忽略重新启动的事情。

答案1

这听起来像是一个依赖性问题。

Systemd 正在运行,您的脚本需要预先运行 Ruby 才能执行。因此,在启动时,该服务可能会在 Ruby 加载/完成之前运行。这就是为什么您可以在盒子启动并运行后运行它。

查看在 [Unit] 'After=' 下添加 Ruby 环境的服务名称。(我不确定那会是什么。)

然后 Systemd 应该等待 Ruby 加载,然后再尝试加载服务。

查看您的 Ruby 脚本并了解它可能需要哪些依赖项。例如,可能需要预先启动并运行网络。在 [Unit] 下,您可以添加“After=”,然后添加所需的依赖项。

After=network.target

这就是为什么在盒子启动并运行后您可以启动服务,所需的依赖项已加载。

相关内容