it-swarm-pt.com

Execute o comando Nohup com entrada

No UNIX, tenho um processo que desejo executar usando o Nohup. No entanto, este processo irá, em algum ponto, esperar em um prompt onde eu tenho que inserir yes ou no para continuar. Até agora, no UNIX, tenho feito o seguinte:

Nohup myprocess <<EOF
y
EOF

Então, eu começo o processo 'meuprocesso' usando Nohup e canalizo um arquivo com 'y' e, em seguida, fecho o arquivo. As linhas acima são efetivamente três comandos separados - ou seja, eu pressiono enter na primeira linha no UNIX, então recebo um prompt onde digito 'y' e pressiono enter para, finalmente, digitar 'EOF' e pressionar Enter novamente. Então funciona perfeitamente, mas meu problema está abaixo.

Quero agora executar isso em Perl, mas não tenho certeza de como posso executar esse comando, pois ele tem mais de três linhas. Não sei se o seguinte vai funcionar:

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

Se você deseja apenas escrever um único y no stdin do processo, pode fazer o seguinte:

(echo y | Nohup myprocess) &

Se você quiser continuar escrevendo y para cada Prompt que aparecer, o coreutil yes existe exatamente para esse propósito - ele continuará escrevendo tudo o que você disser para o stdout. Seu padrão é a saída "y", então você pode apenas:

(yes | Nohup myprocess) &

mas se você precisar de algo mais, pode passar como um argumento

19
Michael Mrozek