在 UNIX 中,我想使用 nohup 运行一个进程。但是,此过程有时会在出现提示时等待,我必须输入yes
或no
等待它继续。到目前为止,在 UNIX 中我一直在做以下事情:
nohup myprocess <<EOF
y
EOF
因此,我使用 nohup 启动进程“myprocess”,并使用“y”通过管道输入文件,然后关闭该文件。上面的行实际上是三个单独的命令 - 即我在 UNIX 中的第一行按 Enter 键,然后出现提示,输入“y”,然后按 Enter 键,最后输入“EOF”并再次按回车键。所以这很完美,但我的问题如下。
我现在想在 Perl 中执行此命令,但我不确定如何执行此命令,因为它超过三行。我不知道以下是否有效:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
答案1
如果您只想将单个写入y
进程的标准输入,您可以这样做:
(echo y | nohup myprocess) &
如果您想继续y
为出现的每个提示进行写入,则 coreutil 的yes
存在正是为了这个目的——它将继续将您告诉它的任何内容写入标准输出。它的默认值是输出“y”,所以你可以:
(yes | nohup myprocess) &
但如果您需要其他东西,您可以将其作为参数传递