입력으로 Nohup 명령 실행


11

UNIX에는 nohup을 사용하여 실행하려는 프로세스가 있습니다. 그러나이 과정은 어느 시점에서 내가 입력해야 yes하거나 no계속 진행 하라는 프롬프트를 기다립니다 . 지금까지 UNIX에서는 다음을 수행했습니다.

nohup myprocess <<EOF
y
EOF

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

이제 이것을 Perl에서 실행하고 싶지만이 명령이 세 줄 이상이므로 어떻게 실행할 수 있는지 잘 모르겠습니다. 다음이 작동하는지 모르겠습니다.

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

이 (첫 번째 편집이 조금 무의미한 만든 후)는 질문에 기록되는 방식으로 작동합니다

@hop 나는 당신이 무엇을 말하는지 정말로 모른다. 첫 번째 편집은 개행을 추가하고 코드 부분으로 코드를 포맷하여 올바르게 표시되도록했다. 나는 거의 아무것도 바꾸지 않았다. 원래 수정본은 여기있다
Michael Mrozek

@ 마이클 : 당신이 옳고 미안 해요. 나는 diff와 생각을 잘못 해석했으며, 당신은 백틱을 추가했습니다. 질문을 훨씬 더 무의미하게 만듭니다 : 주어진 예제가 작동해야합니다.

@hop 펄 하나? 나는 펄을 알지 못해서 시도하지 않고 작동하지 않는다고 가정했지만, 그가 "다음이 잘 될지 모르겠다"고 말했다. 당신은 아마 주어진 예제가 효과가 있다고 대답해야합니다
Michael Mrozek

답변:


19

y프로세스의 stdin에 싱글을 쓰려면 다음 과 같이하십시오.

(echo y | nohup myprocess) &

y나오는 모든 프롬프트에 대해 계속 쓰기 를 원한다면 coreutil yes은 정확히이 목적을 위해 존재합니다. 기본값은 "y"를 출력하는 것이므로 다음을 수행 할 수 있습니다.

(yes | nohup myprocess) &

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


+1 : yes이온 에서 사용 된 것을 보지 못함
msw

마이클, 신속한 답변 감사합니다. 그러나 Y를 프로세스에 반영하여 제안을 시도한 것 같습니다. 이 작업을 수행하면 출력이 &에 있다는 사실에도 불구하고 출력이 항상 터미널에 유출됩니다.

&는 프로세스 출력이 콘솔에 기록되는 것을 막지 않습니다. 백그라운드에서 시작합니다.
fschmitt

이 질문에 대한 답은 어떻게 되나요?

@Riccardo 나는 조금 실험했고, 당신이 옳다고 생각합니다. 고마워
Michael Mrozek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.