IT story

nohup과 앰퍼샌드의 차이점은 무엇입니까

hot-time 2020. 4. 24. 08:08
반응형

nohup과 앰퍼샌드의 차이점은 무엇입니까


둘 다 nohup myprocess.out &또는 myprocess.out &myprocess.out을 백그라운드에서 실행하도록 설정하십시오. 터미널을 종료 한 후에도 프로세스가 여전히 실행 중입니다. 그들 사이의 차이점은 무엇입니까?


nohupman 7 signal앰퍼샌드가하지 않는 동안 행 아웃 신호를 포착합니다 ( ). (쉘이 그렇게 구성되거나 전혀 전송되지 않는 경우 제외 SIGHUP).

일반적으로 &쉘을 사용한 후 명령을 실행 한 후 쉘은 행업 신호 ( kill -SIGHUP <pid>)를 사용하여 하위 명령을 종료합니다 . nohup신호를 포착하고 무시하여 실제 응용 프로그램에 도달하지 않기 때문에이를 사용하여 방지 할 수 있습니다 .

bash를 사용하는 경우 명령 shopt | grep hupon사용 하여 쉘이 SIGHUP을 하위 프로세스로 보낼지 여부를 찾을 수 있습니다 . 꺼져 있으면 프로세스가 종료되지 않습니다. bash가 응용 프로그램을 종료하는 방법에 대한 자세한 내용은 여기를 참조하십시오 .

경우가 있습니다 nohup과정은 당신이 재접속에게 시작할 때, 예를 들어, 작동하지 않습니다 SIGHUP는 경우와 같이, 신호를 여기가 .


myprocess.out &서브 쉘을 사용하여 백그라운드에서 프로세스를 실행합니다. 현재 셸이 종료되면 (예 : 로그 아웃) 모든 하위 셸도 종료되므로 백그라운드 프로세스도 종료됩니다. nohup을의 명령은 무시 HUP신호를 현재 쉘이 종료하여도, 서브 쉘과 myprocess.out은 백그라운드에서 계속 실행됩니다. 또 다른 차이점은 &단독으로는 stdout / stderr를 리디렉션하지 않으므로 출력이나 오류가 있으면 터미널에 표시됩니다. 반면에 nohup은 stdout / stderr을 nohup.out 또는 $ HOME / nohup.out으로 경로 재 지정합니다.


우리는 대부분 ssh를 사용하여 원격 서버에 로그인합니다. 쉘 스크립트를 시작하고 로그 아웃하면 프로세스가 종료됩니다. Nohup은 쉘에서 로그 아웃 한 후에도 백그라운드에서 스크립트를 계속 실행하는 데 도움이됩니다.

Nohup command name &
eg: nohup sh script.sh &

Nohup은 HUP 신호를 포착합니다. Nohup은 백그라운드에서 작업을 자동으로 넣지 않습니다. &를 사용하여 명시 적으로 말해야합니다.


앰퍼샌드 (&)를 사용하면 하위 프로세스 (현재 하위 세션에서 하위 프로세스)로 명령이 실행됩니다. 그러나 세션을 종료하면 모든 하위 프로세스가 종료됩니다.

nohup + 앰퍼샌드 (&)를 사용하면 세션이 종료 될 때 하위 프로세스의 상위 프로세스가 "초기"프로세스 인 "1"로 변경되어 하위 프로세스가 종료되는 것을 제외하고 동일한 작업을 수행합니다.


틀 렸으면 말해줘

  nohup myprocess.out &

nohup 은 행업 신호를 포착하여 터미널을 닫을 때 프로세스를 보냅니다.

 myprocess.out &

프로세스는 실행될 수 있지만 터미널이 닫히면 중지됩니다.

nohup myprocess.out

터미널을 닫은 상태에서도 프로세스를 실행할 수 있지만 터미널에서 ctrl+ z눌러 프로세스를 중지 할 수 있습니다. Crt+ 존재 z하는 경우 작동하지 않습니다 &.


nohup 명령은 신호 마스킹 유틸리티이며 행업 신호를 포착합니다. 앰퍼샌드가 끊기 신호를 포착하지 못하는 경우. 쉘은 &를 사용하여 명령을 실행하고 쉘을 종료 할 때 정지 신호로 부속 명령을 종료합니다. 이것은 신호를 포착하기 때문에 nohup을 사용하여 방지 할 수 있습니다. Nohup 명령은 커널에 의해 프로세스로 전송 될 수있는 끊기 신호를 받아 들여 차단합니다. Nohup 명령은 사용자가 오래 실행되는 응용 프로그램 로그 아웃을 시작하거나 프로세스가 시작된 창을 닫고 싶을 때 유용합니다. 이러한 조치 중 하나는 일반적으로 커널이 응용 프로그램에서 전화를 끊도록 프롬프트하지만 nohup 랩퍼는 프로세스를 계속할 수있게합니다. 앰퍼샌드를 사용하면 현재 bash 세션의 하위 프로세스와이 하위 프로세스에서 명령이 실행됩니다. 세션을 종료하면 해당 프로세스의 모든 하위 프로세스가 종료됩니다. 앰퍼샌드는 활성 쉘의 작업 제어와 관련이 있습니다. 백그라운드의 세션에서 프로세스를 실행하는 데 유용합니다.

참고 URL : https://stackoverflow.com/questions/15595374/whats-the-difference-between-nohup-and-ampersand

반응형