如何让 systemd 服务在等待用户输入时暂停启动?

如何让 systemd 服务在等待用户输入时暂停启动?

读取和睡眠(使用openvt -w)都被执行(read -p显示消息),但无法暂停启动。

我尝试了多种选项的组合/etc/systemd/system/<service>

Type=oneshot
TimeoutSec=5000
StandardInput=tty

用例仅在服务脚本停止运行后加载 GUI。我需要在 GUI 加载之前将 sshfs (还有多个用户和主机名选项)安装为 /home 并将“冻结”/home 作为本地分区(默认)。

答案1

“暂停启动”并不完全适用于 systemd; systemd 并行运行多个服务。

但是,通过向服务添加“依赖项”,您基本上可以指定“启动应暂停”并等待您的服务的时间点。

对于上面的用例,添加到/etc/systemd/system/<service>

[Unit]
Description=commands to run before GUI loads
Before=display-manager.service

这将迫使display-manager.service等待<service>。就我而言,<service>涉及用户输入(对于那些没有获得连接的读者),有效地“暂停启动”。

下面还有其他评论者表达怀疑的评论:

此类事情有一个用例 - 解锁加密分区。由于 systemd 中的错误 (bugs.freedesktop.org/show_bug.cgi?id=88483),无法在启动期间使用开箱即用的 systemd 机制解锁加密的多设备 Btrfs 阵列。您需要创建自己的 systemd 服务文件,经过数小时的尝试,这个答案在我的服务文件中缺少了我需要的部分。谢谢阿格尔。

相关内容