prosource

노업과 앰퍼샌드의 차이점은 무엇입니까?

probook 2023. 4. 23. 10:34
반응형

노업과 앰퍼샌드의 차이점은 무엇입니까?

다.nohup myprocess.out & ★★★★★★★★★★★★★★★★★」myprocess.out &myprocessmy process합니다.이치노단말기를 셧다운해도 프로세스는 계속 실행됩니다.그의의 이이? ?? ???

nohup는, 행업합니다( 를 참조).man 7 signal 않습니다, 이 그렇게 되어 있거나 "ampersand"를하지 않습니다SIGHUP(미국의)

「」를 사용해 .&후 은 행업 신호 신호)와 함께 서브 합니다.kill -SIGHUP <pid>하려면 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 입니다.nohup실제 어플리케이션에 도달하지 않도록 신호를 포착하여 무시합니다.

에는 bash 할 수 .shopt | grep hupon셸이 하위 프로세스에 SAHUP을 전송하는지 여부를 확인합니다.꺼진 경우 프로세스가 종료되지 않습니다.bash가 응용 프로그램을 종료하는 방법에 대한 자세한 내용은 여기를 참조하십시오.

하는 경우가 있다nohup는, 「재접속」, 「」, 「재접속」의 등, 동작하지 .SIGHUP신호를 보냅니다.

myprocess.out &는 서브셸을 사용하여 백그라운드에서 프로세스를 실행합니다.현재 셸이 종료된 경우(로그아웃에 의해 종료됨), 모든 서브셸도 종료되므로 백그라운드프로세스도 종료됩니다.nohup 명령어는 이 명령어를 무시합니다.HUP과 "은 "Signal"로 설정됩니다.myprocess.out백그라운드에서 계속 실행됩니다.또 다른 차이점은&/stderr는 stdout/stderr로 리다이렉트하고, stdout/stderr로 .nohup.out ★★★★★★★★★★★★★★★★★」$HOME/nohup.out.

대부분의 경우 ssh를 사용하여 리모트서버에 로그인합니다.셸 스크립트를 시작하고 로그아웃하면 프로세스가 중지됩니다.Nohup은 셸에서 로그아웃한 후에도 백그라운드에서 스크립트를 계속 실행할 수 있도록 지원합니다.

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

Nohup은 HUP 신호를 포착합니다.Nohup은 자동으로 작업을 백그라운드에 배치하지 않습니다.우리는 &를 사용하여 그것을 명확하게 말할 필요가 있다.

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

nohup + ampersand (&)를 사용하면 세션이 종료될 때 자녀 프로세스의 부모가 "init" 프로세스인 "1"로 변경되어 자녀가 살해되지 않도록 보호된다는 점을 제외하고는 동일한 작업을 수행합니다.

내가 틀렸다면 고쳐 주세요.

  nohup myprocess.out &

nohup은 행업 신호를 포착합니다.이것은 단말기가 닫힐 때 프로세스를 송신하는 것을 의미합니다.

 myprocess.out &

프로세스를 실행할 수 있지만 단말기가 닫히면 프로세스가 중지됩니다.

nohup myprocess.out

가 종료된수, 하려면 , 「」를 누릅니다.ctrl+z단말기로. Crt+z가 없다&가 존재합니다.

nohup 명령어는 신호 마스킹 유틸리티로 행업 신호를 포착합니다.앰퍼샌드가 끊긴 신호를 잡지 못하는 곳이죠셸은 셸을 사용하여 명령어를 실행하거나 셸을 종료할 때 행업 신호와 함께 서브 명령어를 종료합니다.이는 신호를 포착하기 때문에 노업을 사용하여 예방할 수 있습니다.nohup 명령어는 커널에 의해 프로세스로 전송될 수 있는 절단 신호를 받아들여 차단합니다.nohup 명령어는 사용자가 장시간 실행 중인 응용 프로그램의 로그아웃을 시작하거나 프로세스가 시작된 창을 닫는 경우에 유용합니다.이러한 액션 중 하나는 보통 커널이 어플리케이션에서 전화를 끊도록 요구하지만, nohup 래퍼를 사용하면 프로세스를 계속할 수 있습니다.앰퍼샌드를 사용하면 하위 프로세스 및 현재 bash 세션의 하위 프로세스에서 명령이 실행됩니다.세션을 종료하면 해당 프로세스의 모든 하위 프로세스가 중지됩니다.앰퍼샌드는 액티브셸의 작업 제어와 관련되어 있습니다.이 기능은 백그라운드에서 세션에서 프로세스를 실행할 때 유용합니다.

환경 간의 작은 차이가 당신을 괴롭힐 수 있는 경우가 많습니다.이것은 내가 최근에 부딪힌 것이다.이 두 명령어의 차이점은 무엇입니까?

1 ~ $ nohup myprocess.out &
2 ~ $ myprocess.out &

답은 평소와 같다 - 상황에 따라 다르다.

nohup은 행업 신호를 수신하지만 앰퍼샌드는 수신하지 않습니다.

전화 끊기 신호가 뭐죠?

SAHUP - 제어단말기 또는 제어공정 정지 시 행업이 감지됨(값: 1)

보통 셸을 사용하여 명령어를 실행한 후 셸을 종료하면 셸은 행업 신호(kill - SIHUP $PID 등)로 서브 명령어를 종료합니다.이는 nohup을 사용하여 예방할 수 있습니다.그것은 신호를 포착하고 무시하기 때문에 실제 어플리케이션에 도달하지 않기 때문입니다.

좋아요, 하지만 이 경우처럼 '하지만'은 항상 있어요.셸이 SAHUP를 전혀 송신하지 않는 방법으로 설정되어 있는 경우, 이러한 기동 방식에는 차이가 없습니다.

bash 를 사용하고 있는 경우는, 다음의 커맨드를 사용하고, 셸이 그 자프로세스에 SAHUP 를 송신하고 있는지 아닌지를 확인할 수 있습니다.

~ $ shopt | grep hupon

그리고 노업이 안 되는 경우도 있어요.예를 들어 프로세스를 시작하면 NOHUP 신호가 다시 연결됩니다(애플리케이션 코드레벨 내부).

위의 경우 커스텀서비스 기동 스크립트 내에서 nohup 명령 없이 적절한 애플리케이션을 셋업 및 기동하는 두 번째 스크립트에 대한 호출이 있을 때 차이가 없어 고민했습니다.

한 Linux 환경에서는 모든 것이 원활하게 동작하고 두 번째 환경에서는 두 번째 스크립트가 종료되자마자 애플리케이션이 종료되었습니다(물론 이 경우 검출에 시간이 많이 걸렸지만: stuck_out_tongue: 라고 생각할 수 있습니다).

두 번째 스크립트에 부팅 방식으로 nohup을 추가한 후 스크립트가 종료되어도 응용 프로그램은 계속 실행되며 이 동작은 양쪽 환경에서 일관되게 됩니다.

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

반응형