我想在启动时添加一个问题。用户应该进行键盘输入,并且根据这些输入,脚本中有一个 if 条件。
“你想要 X 还是 Y?”
“或者只需等待 10 秒即可默认为 X。”
答案1
这有点棘手,但您可以在系统启动时使用 plymouth 与用户交谈。这仅当您的作业阻止启动时才有效,因为一旦达到运行级别 2 并且 plymouth 终止,您将无法再进行交互。
基本上,您想要执行“plymouth ask-question”或“plymouth watch-keystroke”,然后系统会提示用户。因此,如果您想等待用户 10 秒钟,则需要执行如下新任务(这完全是理论上的,未经测试!):
start on starting rc RUNLEVEL=[2345]
task
script
myscript=`mktemp /tmp/killme.sh.XXXXXX`
chmod 0750 /tmp/killme.sh
cat > $myscript <<EOF
#!/bin/sh
# script is sent key pressed
cat > /tmp/keypresses.txt
kill -USR1 $$
EOF
key=""
handle_usr1() {
key=`cat /tmp/keypresses.txt`
plymouth display-message --text="you pressed $key"
exit 0
}
trap handle_usr1 USR1
plymouth watch-keystroke --command=$myscript --keys="ABCD"
timeleft=10
while [ $timeleft -gt 0 ] ; do
plymouth display-message --text="you have $timeleft seconds to press A,B,C, or D..."
timeleft=(($timeleft-1))
done
plymouth display-message --text="Timed out..."
end script