“<command> & disown”과“nohup <command> & disown”의 차이점


41

이것은의 사용에 대한 나의 이해이다 &, disownnohup:

  • <command>: 터미널의 현재 내 프로세스 실행 bash, 인스턴스를 전경 (즉 프로세스가 나열됩니다 bash전경 작업과 stdin, stdout그리고 stderr여전히 터미널에 바인딩 ); 끊지 않는 면역 ;
  • <command> &: 터미널의 현재 내 프로세스 실행 bash, 인스턴스를 배경으로 (즉 프로세스가 나열됩니다 bash백그라운드 작업과 stdin, stdout그리고 stderr여전히 터미널에 바인딩 ); 끊지 않는 면역 ;
  • <command> & disown: 터미널의 현재 내 프로세스 실행 bash, 인스턴스를 배경으로 하지만 프로세스가됩니다 으로부터 분리 bash의 작업 '목록 (즉, 프로세스가로 표시되지 bash전경 / 백그라운드 작업과 stdin, stdout그리고 stderr여전히 터미널에 바인딩 ); 끊기에 면역 ;
  • nohup <command> & disown: 터미널의 현재 내 프로세스 실행 bash, 인스턴스를 배경으로 하지만 프로세스가됩니다 으로부터 분리 bash의 작업 '목록 (즉, 프로세스가로 표시되지 bash전경 / 백그라운드 작업과 stdin, stdout그리고 stderr있다 하지 여전히 터미널에 바인딩 ) ; 끊기에 면역 ;

그래서, 옆에서 nohup <command> & disown차단 stdin및 리디렉션 stdoutstderrnohup.out가에 완전히 동일하게 간주 될 수있는 것처럼 기본적으로, 그것은 나에게 보인다 <command> & disown.

위의 모든 것이 맞습니까? 오해가 있습니까?


1
"전화 끊기 면역"과 "전화 끊기 면역"이란 무엇입니까?
혼돈

2
@chaos 부모 bash인스턴스 를 종료 / 종료 해도 프로세스가 종료 되지 않습니다.
kos

답변:


31

당신의 이해는 기본적으로 정확합니다. 모두 disownnohup당신이 실행중인 작업을 중지하지 않고 실행중인 쉘 세션을 종료 할 수 있도록하는 데 사용됩니다. 몇 가지 설명 :

  • 실행할 이유가 없습니다 nohup command & disown, nohup이미 당신을 위해 그것을 모른다고 할 것입니다.

  • nohupPOSIX에 의해 정의 되지만 disown not은 아닙니다 . 많은 쉘 (예를 들면하면서 수단은 bash, zsh, ksh) 그것을 가지고, 다른 사람은 (예를 들어 tcsh, csh, dashsh)를 필요가 없습니다.

  • disown명령을 실행 한 후 사용할 수 있지만 nohup이전에 사용해야합니다.

내가 알 수있는 한 두 명령의 실제 효과는 동일합니다. 그들은 각각 다른 기능이 부족한 기능을 가지고 있지만 ( help disown과 참조 man nohup) 기본 기능은 동일합니다.

이러한 도구와 도구의 차이점에 대한 자세한 내용은 여기에서 답변을 확인하십시오.


11
Nohupdisown같은 것이 아니다 함께 두 명령을 사용하여 중복 아닙니다. 자세한 설명 은 이 답변 을 참조하십시오.
메모

7

stdin, stdout and stderr are still bound to the terminal올바른 개념은 아니지만 첫 번째에서 세 번째 포인트는 괜찮아 보입니다 . stdin항상 터미널을 통해 명령에 파일 이름을 입력하거나 터미널을 사용하는 방법으로 터미널에 바인딩됩니다. stdout and stderr are still bound to the terminal괜찮아

stdin, stdout and stderr are not still bound to the terminal번째 요점에서 당신은 나의 이전 단락에서 언급 한 것처럼 옳지 않습니다. 또한 여기서는 /dev/null입력 파일로을 사용 하고 있습니다 ( command예 : 명령이 cat이면) cat /dev/null.

5 번째 지점이 명령은 올바르게 사용한 넣어되지 nohup <command> & disown중 하나를 사용하는 동안, nohup또는 disown다른 하나는 필요하지 않습니다. 그들의 목적은 (을 무시하기 위해 SIGHUP) 동일 하지만 약간 다른 방식으로 기능합니다. 따라서 명령을로 단순화 할 수 있습니다 nohup <command> &.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.