停止系统服务上的交互式脚本

时间:2019-08-27 16:18:05

标签: linux io sh systemd

在系统关闭(重新启动...)时,我需要运行脚本,要求用户提供一些操作:

#!/bin/bash 
tty
echo ARE YOU SURE?:  
read test 
echo $test
[Unit] 
Description= Minetest server 

[Service] 
StandardInput=tty-force
ExecStart= /bin/true
ExecStop=/home/user/test.sh
Type=oneshot

StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty8
TTYReset=yes
TTYVHangup=yes
RemainAfterExit=true

如果我将其作为ExecStop执行,则输出如下:

not a tty 
INPUT TEST:

不要求输入

怎么了?

1 个答案:

答案 0 :(得分:0)

ExecStop由另一个脚本调用,而不是从您的控制台调用,因此没有tty设备连接 并且读取的内置命令要求输入是tty设备

btw,要求用户通过脚本做出贡献是脆弱且不可控制的