在 bash shell 中获取用户输入后,如何在后台运行进程

在 bash shell 中获取用户输入后,如何在后台运行进程
#!/bin/bash
set -e

INPUT_NO_OF_PROCESS=$1
NO_OF_PROCESS="${INPUT_NO_OF_PROCESS:-1}"

#mkdir -p $DUMP_DIR
echo "Spawning processes=$NO_OF_PROCESS"


for i in $(seq 1 $NO_OF_PROCESS)
do
    # This command will expect a password and has to be spawned
    # into multiple processes after getting the password
    some_command_that_expects_password&
done

如果上述 bash 脚本作为后台进程启动,则无法获取密码&

有没有什么方法可以获取输入并让进程进入后台?

答案1

并不真地。

只有命令command_with_password知道何时输入密码(可能重试)。因此只有命令可以确定何时可以进入后台。

您也许能够使用第二个脚本来做一些事情,该脚本监视第一个脚本kill -20并向程序发送 SIGTSTP()然后将其置于后台,但这并非易事。

这也取决于询问密码的方式。在某些情况下,将密码包装cmd_with_passwordexpect脚本中是一种选择。

相关内容