等待 systemd oneshot 服务完成

等待 systemd oneshot 服务完成

我正在做一些服务器配置,我需要在安装后运行一个脚本,因为它要求系统完全正常运行,包括服务。所以我不能把它放在%post我的 kickstart 文件的部分里。

相反,我创建了一个 systemd 服务,它最后所做的就是禁用自身。

[Unit]
Description=Prepare the system after installation

[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system

[Install]
WantedBy=multi-user.target

问题是,在首次启动期间,我得到登录提示符,甚至可以登录并开始使用系统,而“首次启动脚本”仍在运行。

这会让设置系统的管理员产生系统已完成的假象,但事实并非如此。

我希望服务延迟启动,最好显示一条消息,例如“系统正在准备,请稍候......”并等待脚本完成。

答案1

在这里找到答案:https://unix.stackexchange.com/questions/216045/systemd-configure-unit-file-so-that-login-screen-is-not-shown-until-service-exi

Before当终端可用时只需设置为:

[Unit]
Description=Prepare the system after installation
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected]

[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system

[Install]
WantedBy=multi-user.target

答案2

Before=gdm.service假设您使用 GDM 作为登录管理器,请在该部分中添加一行[Unit]

如果您不使用 gdm,请找出启动 xorg 的服务并将其放入行中Before=

这将导致任务在登录管理器显示之前完成。

相关内容