it-swarm-ko.tech

입력으로 Nohup 명령 실행

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
`
11
Sandeep

프로세스의 stdin에 단일 y를 작성하려는 경우 다음과 같이 할 수 있습니다.

(echo y | Nohup myprocess) &

표시되는 모든 프롬프트에 대해 y을 계속 작성하려면 coreutil yes이 정확히이 목적을 위해 존재합니다. stdout에 명령 한 내용을 계속 작성합니다. 기본값은 "y"를 출력하는 것이므로 다음과 같이 할 수 있습니다.

(yes | Nohup myprocess) &

그러나 다른 것이 필요하면 인수로 전달할 수 있습니다.

19
Michael Mrozek