En UNIX, tengo un proceso que quiero ejecutar usando nohup. Sin embargo, este proceso en algún momento esperará en un mensaje en el que debo 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 anteriores son efectivamente tres comandos separados, es decir, presiono enter en la primera línea en UNIX, luego aparece un mensaje donde ingreso 'y' y luego presiono enter para finalmente escribir 'EOF' y presionar regresar nuevamente. Entonces esto funciona perfectamente, pero mi problema está a continuación.
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
`
Respuesta aceptada:
Si solo quieres escribir un solo y
a la entrada estándar del proceso, puede hacer esto:
(echo y | nohup myprocess) &
Si quieres seguir escribiendo y
para cada mensaje que aparece, coreutil yes
existe exactamente para este propósito:seguirá escribiendo lo que le digas a stdout. Su valor predeterminado es generar "y", por lo que solo puede:
(yes | nohup myprocess) &
pero si necesitas algo más puedes pasarlo como argumento