2014-11-13 1 views

답변

35

아니, 별도로 명령에 nohup을 추가해야합니다. 이 같은

뭔가를 권장합니다 :

nohup sh -c "cmd1 | cmd2" & 

또는 대안 :

nohup $SHELL <<EOF & 
cmd1 | cmd2 
EOF 
+0

누군가가'$ SHELL '이 무엇인지 설명하고 왜 필요한지 설명해주십시오. –

+1

'$ SHELL'은 현재 실행중인 쉘을 포함하고 있습니다. 대부분의 리눅스 시스템에서는'/ bin/bash'이지만'/ usr/bin/zsh' 또는 다른 것일 수 있습니다. '$ SHELL' 변수를 사용하는 이점은 일반적인 쉘 설정을 사용하여 명령이 실행된다는 것입니다. – Wolph

+0

'EOF &'가 나에게 적합하지 않습니다. – RoVo

0
nohup cmd1 | cmd2 & 

nohup: ignoring input and redirecting stderr to stdout 
+0

링크가 작동하지 않습니다. –

+0

@ JasmineLognnes 링크에 내 답변과 함께 게시 된 동일한 오류 메시지가 포함되어 있습니다. – Skynet

7

으로 다음과 같이 이것은 아니, 난 그냥 지금 확인했다의 대안는 I가 단말기로부터 표준 입력, 표준 출력과 sterr 재 라우팅함으로써

(cmd1 | cmd2) > logfile < /dev/null 2>&1 & 

추천이 많은 I는 적어도 선호 nohup을 신택스와 같은 효과를 얻을 수있다.

+8

그건'nohup'처럼 HUP 시그널로부터 명령을 보호하지 않습니다. 'trap ("HUP; cmd1 | cmd2) logfile 2> & 1 &'이 필요합니다. –

+1

사실이지만 쓰여진 것처럼, 닫는 터미널이 처음부터 프로세스에 HUP를 보내지 못하게합니다. –

관련 문제