실행하려면 Nohup 명령을 입력하세요.

실행하려면 Nohup 명령을 입력하세요.

UNIX에서 nohup을 사용하여 프로세스를 실행하고 싶습니다. 그러나 이 프로세스는 메시지가 표시될 때 대기하는 경우가 있으므로 해당 프로세스에 들어가거나 yes계속 no될 때까지 기다려야 합니다. 지금까지 UNIX에서는 다음을 수행했습니다.

nohup myprocess <<EOF
y
EOF

그래서 nohup을 사용하여 "myprocess" 프로세스를 시작하고 "y"를 사용하여 파일을 파이프한 다음 파일을 닫습니다. 위의 줄은 실제로 세 개의 개별 명령입니다. 즉, UNIX의 첫 번째 줄에서 Enter 키를 누른 다음 메시지가 표시되면 "y"를 입력하고 Enter 키를 누른 다음 마지막으로 "EOF"를 입력하고 Enter 키를 다시 누릅니다. 그래서 이것은 완벽하게 작동하지만 내 질문은 다음과 같습니다.

이제 이 명령을 Perl에서 실행하고 싶지만 세 줄 이상이기 때문에 어떻게 해야 할지 잘 모르겠습니다. 다음이 작동하는지 모르겠습니다.

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

답변1

y프로세스의 표준 입력 에 단일 쓰기만 원하는 경우 다음을 수행할 수 있습니다.

(echo y | nohup myprocess) &

y나타나는 모든 프롬프트에 대해 계속해서 쓰고 싶다면 coreutil은 yes정확히 그 목적을 위해 존재합니다. 즉, 사용자가 말하는 내용을 표준 출력에 계속 기록합니다. 기본값은 "y"를 출력하는 것이므로 다음을 수행할 수 있습니다.

(yes | nohup myprocess) &

하지만 다른 것이 필요한 경우 매개변수로 전달할 수 있습니다.

관련 정보