服务在启动后不会启动,直到通过虚拟控制台登录后才会启动

服务在启动后不会启动,直到通过虚拟控制台登录后才会启动

我目前正在运行 Debian 测试,目前该测试已经很出色了。这是场景:

我特别有两个服务,lighttpdchrony,启动后将无法正常启动。奇怪的是它们会正常启动除非tty1我通过虚拟控制台以身份登录root。以非 root 用户身份登录有时也能正常工作,但不一致。除非我这样做,否则lighttpd将无法完成其启动过程。当我检查 systemd 服务时,它只显示 2 个 php-cgi 分叉进程,而不是通常显示的 5-6 个进程,虽然状态显示该进程处于活动状态并已启动,但我无法访问网络服务器。在这种情况下,chrony它将超时并失败。

我可以通过 SSH 连接到机器,没有任何问题,但一些与 systemd 相关的命令也会挂起,即如果我尝试禁用或重新启动任一服务,它将挂起或超时。一旦我通过 登录tty1,它将恢复。我只需要登录一次,然后就可以退出。从那里一切正常,即使通过 SSH 也是如此。只有在启动后才会出现此问题。如果我tty1在启动后一可用就登录,这两个服务都会正常启动。

就故障排除而言,我所做的事情是卸载lighttpdphp*包括chrony依赖它们使用的任何软件包apt purge,并确保删除所有剩余文件,然后重新安装。对于lighttpd和,我还为和的chronysystemd 单元文件添加了覆盖,但没有效果。After=Wants=network-online.targetnetwork.target

我还启动了两个已卸载的服务。如果我尝试chrony通过 SSH 再次安装,它将挂在 systemd 创建符号链接以启用 systemd 单元文件的位置。当我tty1此时登录时,它将继续并完成设置。因此,在我看来,systemd 正在执行的引导过程存在某种问题,导致了这种情况,就好像引导过程不知何故没有完全完成一样。

我查看了一些日志,但找不到任何信息可以为我指明解决此问题的正确方向。

答案1

在进一步挖掘日志后,我看到消息kernel: random: crng init done出现,服务很快就会启动。事实证明这是 Linux 内核的一个错误,根据 4.16 引入这是对有关同一消息的问题的回答

鉴于它urandom被阻止了,即使它不应该被阻止,通过虚拟控制台登录似乎足以收集额外的熵并让服务继续启动。

我安装了haveged,问题解决了。

相关内容