使用输入执行 Nohup 命令

15 process perl nohup

在 UNIX 中,我有一个要使用 nohup 运行的进程。但是,此过程将在某个时候等待我必须输入yesno继续的提示。到目前为止,在 UNIX 中我一直在做以下事情:

nohup myprocess <<EOF
y
EOF
Run Code Online (Sandbox Code Playgroud)

因此,我使用 nohup 启动进程“myprocess”,并在带有“y”的文件中使用管道,然后关闭该文件。上面的几行实际上是三个独立的命令——即我在 UNIX 的第一行按 Enter,然后我得到一个提示,我输入“y”,然后按 Enter,最后输入“EOF”并再次按回车。所以这很有效,但我的问题如下。

我现在想在 Perl 中执行此命令,但我不确定如何执行此命令,因为它超过三行。我不知道以下是否有效:

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Run Code Online (Sandbox Code Playgroud)

Mic*_*zek 19

如果您只想将单个写入y进程的标准输入,您可以这样做:

(echo y | nohup myprocess) &
Run Code Online (Sandbox Code Playgroud)

如果您想y为出现的每个提示继续编写,coreutilyes正是为此目的而存在的——它将继续将您告诉它的任何内容写入标准输出。它的默认值是输出“y”,所以你可以:

(yes | nohup myprocess) &
Run Code Online (Sandbox Code Playgroud)

但如果你需要别的东西,你可以将它作为参数传递