it-swarm-es.tech

Ejecutar el comando Nohup con entrada

En UNIX, tengo un proceso que quiero ejecutar con Nohup. Sin embargo, este proceso en algún momento esperará en un indicador donde tengo que ingresar yes o no para que continúe. Hasta ahora, en UNIX he estado haciendo lo siguiente:

Nohup myprocess <<EOF
y
EOF

Entonces comienzo el proceso 'myprocess' usando Nohup y canalizo un archivo con 'y' y luego cierro el archivo. Las líneas de arriba son efectivamente tres comandos separados, es decir, presiono enter en la primera línea en UNIX, luego recibo un mensaje en el que ingreso 'y' y luego presiono enter para finalmente escribir 'EOF' y presionar regresar nuevamente. Entonces esto funciona perfectamente, pero mi problema está debajo.

Ahora quiero ejecutar esto en Perl, pero no estoy seguro de cómo puedo ejecutar este comando, ya que tiene más de tres líneas. No sé si lo siguiente funcionará:

my $startprocess = `Nohup myprocess <<EOF &
y
EOF
`
11
Sandeep

Si solo desea escribir un solo y en el stdin del proceso, puede hacer esto:

(echo y | Nohup myprocess) &

Si desea seguir escribiendo y para cada Prompt que aparece, el coreutil yes existe exactamente para este propósito: seguirá escribiendo todo lo que le diga en stdout. Su valor predeterminado es generar "y", por lo que puede simplemente:

(yes | Nohup myprocess) &

pero si necesitas algo más puedes pasarlo como argumento

19
Michael Mrozek