![等待 systemd oneshot 服务完成](https://linux22.com/image/699566/%E7%AD%89%E5%BE%85%20systemd%20oneshot%20%E6%9C%8D%E5%8A%A1%E5%AE%8C%E6%88%90.png)
我正在做一些服务器配置,我需要在安装后运行一个脚本,因为它要求系统完全正常运行,包括服务。所以我不能把它放在%post
我的 kickstart 文件的部分里。
相反,我创建了一个 systemd 服务,它最后所做的就是禁用自身。
[Unit]
Description=Prepare the system after installation
[Service]
Type=oneshot
ExecStart=/usr/bin/prepare-system
[Install]
WantedBy=multi-user.target
问题是,在首次启动期间,我得到登录提示符,甚至可以登录并开始使用系统,而“首次启动脚本”仍在运行。
这会让设置系统的管理员产生系统已完成的假象,但事实并非如此。
我希望服务延迟启动,最好显示一条消息,例如“系统正在准备,请稍候......”并等待脚本完成。
答案1
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=
。
这将导致任务在登录管理器显示之前完成。