Ubuntu 18.04 服务即使启用也不会在启动时执行

Ubuntu 18.04 服务即使启用也不会在启动时执行

我有一个服务想要在计算机启动后立即运行。

我遵循的步骤如下:

创建简历

  1. 在 /usr/lib/systemd/system 中创建 cv-init.service
  2. 按照如下所示格式化文件
  3. sudo systemctl 守护进程重新加载
  4. sudo systemctl 启动 cv-init.service
  5. sudo systemctl 启用 cv-init.service

当我第一次运行启用命令时,我收到以下响应:

Created symlink /etc/systemd/system/multi-user.target.wants/cv-init.service -> /usr/lib/systemd/system/cv-init.service

如果我再次运行启用命令,则不会得到任何响应,我必须先删除 multi-user-target-wants 中的符号链接,然后它才会再次显示。

正如我从遇到问题的人们那里读到的许多其他案例一样,如果我手动执行该服务,它会起作用,尽管启用成功,但当我重新启动计算机时,它不会执行。

这是我的服务文件:

[Unit]
Description=Initialize CV

[Service]
Type=oneshot
WorkingDirectory=/app/configuration/cv_init
ExecStart=/app/configuration/cv_init/startup_cv.sh

[Install]
WantedBy=multi-user.target

我认为有必要指出的是,startup_cv.sh 不是一个使守护进程保持活动状态的脚本,它只是运行一些读取日志并采取其他操作的命令,如果我手动运行 .sh 文件,它会按预期工作,但我似乎无法让它在启动时自动运行。

我也尝试了很多方法,这些方法似乎对那些问这种问题的人有用,比如将我的服务放在 /etc/init.d 或 /etc/systemd/system 中,还在我的服务上指定 WANTS 和诸如此类的东西,但它仍然不起作用,有人可以帮我吗?

答案1

所以我发现了问题,我的 /app/configuration/cv_init/startup_cv.sh 执行了一个 docker 命令,而我的服务在 docker 准备好之前就试图执行。我刚刚添加了所需的依赖项,它就可以完美运行。

相关内容