Jump to content

nohup

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

nohup
Developer(s)Various open-source and commercial developers
Operating systemUnix, Unix-like, IBM i
PlatformCross-platform
TypeCommand

nohup은 "전화 끊기 없음(no hang up)"을 의미하는 POSIX 명령입니다. 그 목적은 그것이 HUP (hangup) 신호를 무시하고 따라서 사용자가 로그아웃해도 멈추지 않도록 명령을 실행하는 것입니다.

통상적으로 터미널로 가는 출력은 만약 아직 리다이렉션되지 않았으면 nohup.out이라는 파일로 이동합니다.

Use

아래 명령 중 첫 번째 명령은 후속 로그아웃이 그것을 중지하지 않는 방법으로 abcd 프로그램을 백그라운드에서 시작합니다.

$ nohup abcd &
$ exit

이들 방법은 로그아웃에서 프로세스가 'stop' 신호를 보내는 것을 방지하지만, 만약 입력/출력이 이들 표준 I/O 파일 (stdin, stdout, 또는 stderr)에 대해 수신되면 여전히 터미널을 중단할 것임을 주의하십시오.[1] 아래의 매달리기 극복을 참조하십시오.

아래, 중지하는 중 극복하기를 참조하십시오.

nohup은 종종 더 낮은 우선순위에서 프로세서를 실행하기 위해 nice과 조합에서 사용됩니다.

$ nohup nice abcd &

Implementations

일부 쉘 (예를 들어, bash)은 SIGHUPnohup으로 시작되지 않을지라도 기존 작업으로 전송되거나 전파되는 것을 방지하기 위해 사용될 수 있는 쉘 내장을 제공합니다. bash에서, 이것은 disown -h job을 사용gkadmfhTj 얻을 수 있습니다; 인수없이 같은 내장 함수를 사용하면 작업 테이블에서 작업을 제거하며, 이것은 역시 작업이 신호를 수신하지 않을 것임을 의미합니다. 활성 작업에 disown을 사용하기 전에, 그것은 Ctrl+Z로 중지되어야 하고, bg 명령으로 백그라운드에서 계속되어야 합니다.[2] 또 다른 관련 bash 옵션은 쉘이 정상적으로 종료될 때 HUP 신호를 작업에 자동으로 보내는 shopt huponexit입니다.[3]

AIXSolaris 버전의 nohup은 미래의 SIGHUP 신호를 무시하도록 실행 중인 프로세스를 수정하는 -p 옵션을 가집니다. 위에서 설명된 bashdisown 내장과 달리, nohup -p는 프로세스 ID를 허용합니다.[4]

nohup 명령은 역시 IBM i 운영 시스템에 이식되었습니다.[5]

Overcoming hanging

nohup 백그라운드 작업은 전형적으로 원격 SSH 세션에서 로그오프할 때 그것들을 종료하는 것을 피하기 위해 사용됨을 주목하십시오. 이 상황에서 자주 발생하는 또 다른 문제는 ssh가 로그 오프("중단")를 거부한다는 것인데, 왜냐하면 그것은 백그라운드 작업과 주고받는 임의의 데이터 손실을 거부하기 때문에입니다.[6][7] 이 문제는 세 가지 I/O 스트림을 모두 리다이렉션함으로써 극복할 수도 있습니다:

$ nohup ./myprogram > foo.out 2> foo.err < /dev/null &

역시 닫기 SSH 세션이 유사-터미널이 할당되지 않을 때와 같이 종속 프로세스에 항상 HUP 신호를 보내는 것은 아님을 주목하십시오.[8]

Alternatives

  • 터미널 멀티플렉서는 현재 터미널에서 분리된 별도의 세션에서 명령을 실행할 수 있으며, 이것은 현재 세션이 종료되면 분리된 세션과 그것의 관련된 프로세스가 계속 실행됨을 의미합니다. 그런-다음 나중에 세션에 다시 연결할 수 있습니다.
예를 들어, 다음과 같은 screen 호출은 분리된 세션의 백그라운드에서 somescript.sh를 실행할 것입니다:
$ screen -A -m -d -S somename ./somescript.sh &
  • disown 명령은 작업 테이블에서 작업을 제거하거나, SIGHUP 신호가 세션 종료를 전송되지 않도록 작업을 표시하기 위해 사용됩니다.

References

  1. ^ "Re: nohup/disown and logout". Zsh.org. 2005-02-07. Archived from the original on 2009-05-18. Retrieved 2009-06-10.
  2. ^ Bash Reference Manual Archived 2010-12-03 at the Wayback Machine. Gnu.org. Retrieved on 2015-04-13.
  3. ^ Bash Reference Manual Archived 2010-12-03 at the Wayback Machine. Gnu.org. Retrieved on 2015-04-13.
  4. ^ IBM Knowledge Center Archived 2014-10-15 at the Wayback Machine. 01.ibm.com (2015-03-26). Retrieved on 2015-04-13.
  5. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.{{cite web}}: CS1 maint: url-status (link)
  6. ^ "SSH Frequently Asked Questions". Snailbook.com. Archived from the original on 2009-01-22. Retrieved 2009-06-10.
  7. ^ "OpenSSH FAQ". Openssh.com. 2005-09-20. Archived from the original on 2009-07-10. Retrieved 2009-06-10.
  8. ^ "Bug 396 – sshd orphans processes when no pty allocated". Bugzilla.mindrot.org. Retrieved 2009-06-10.

External links