如何延迟脚本以允许 FreeIPA 首先启动?

如何延迟脚本以允许 FreeIPA 首先启动?

我有一些带有 FreeIPA 服务器的容器,所有用户都通过该服务器进行身份验证。所有操作系统都是 Linux。我的一些容器具有通过 systemd 在启动时运行的服务。不幸的是,这些脚本似乎由于身份验证失败而失败。但是,如果我稍后使用 systemctl start 手动启动该服务,则该服务可以正常启动。

以下是我的某项服务的服务状态输出示例:

● emby-server.service - Emby Server is a personal media server with apps on just about every device.
   Loaded: loaded (/etc/systemd/system/emby-server.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/emby-server.service.d
           └─override.conf
   Active: failed (Result: exit-code) since Tue 2021-01-19 11:25:45 GMT; 35s ago
  Process: 163 ExecStart=/opt/emby-server/bin/emby-server (code=exited, status=217/USER)
  Process: 150 ExecStartPre=/bin/sleep 20 (code=exited, status=217/USER)
 Main PID: 163 (code=exited, status=217/USER)

Jan 19 11:25:45 emby systemd[1]: Starting Emby Server is a personal media server with apps on just about every device....
Jan 19 11:25:45 emby systemd[150]: emby-server.service: Failed to determine user credentials: Connection refused
Jan 19 11:25:45 emby systemd[150]: emby-server.service: Failed at step USER spawning /bin/sleep: Connection refused
Jan 19 11:25:45 emby systemd[1]: Started Emby Server is a personal media server with apps on just about every device..
Jan 19 11:25:45 emby systemd[163]: emby-server.service: Failed to determine user credentials: Connection refused
Jan 19 11:25:45 emby systemd[163]: emby-server.service: Failed at step USER spawning /opt/emby-server/bin/emby-server: Connection refused
Jan 19 11:25:45 emby systemd[1]: emby-server.service: Main process exited, code=exited, status=217/USER
Jan 19 11:25:45 emby systemd[1]: emby-server.service: Failed with result 'exit-code'.

我怀疑我需要在脚本运行之前引入一个暂停,以允许 FreeIPA 客户端先启动,因为脚本在启动时因上述错误而失败,但如果稍后启动则运行良好。

我尝试在 /etc/systemd/system/servicename.service 脚本中添加睡眠功能,并使用 ExecStartPre=-/bin/sleep 20,但我猜测它在此之前就已经失败了,因为脚本本身只有在用户通过身份验证后才能启动。

请您帮助我:

  1. 根据以上信息,我对问题的识别是否正确
  2. 我应该/可以做其他事情来确认问题的原因吗
  3. 我怎样才能暂停一下servicename.service 脚本是否运行?

谢谢

答案1

将以下内容添加到[Unit]systemd 服务文件的部分似乎已经解决了我的问题:

[Unit]
...
After=sssd.service
Requires=sssd.service

这在该服务与sssd提供 FreeIPA 身份/身份验证的服务之间设置了依赖关系和排序约束。

相关内容