nohup 명령의 기능은 무엇입니까?


18

나는 우분투에서 초보자입니다. 나는 명령을 배웠다

nohup [command]- <command>끊기 신호에 면역

"전화 끊기 신호에 대한 면역 "의 의미를 이해할 수 없습니다 . 어떤 종류의 신호에 대해 이야기하고 있습니까? 이 명령을 예제와 함께 사용하는 방법을 알려주십시오.


쉘에서 사용 가능한 경우 disown보다 나은 대안 nohup입니다. command &또는 로 명령의 배경을 Ctrl-Z지정한 다음을 사용 disown하여 셸에서 분리하십시오.
John Kugelman은 Monica

충분하지 않은 @JohnKugelman , 입력, 출력 및 오류 스트림을 전환했습니다. 그렇다면 자동으로 이것을 수행하는 'nohup'을 사용하지 않는 이유는 무엇입니까?
miracle173

답변:


34

gedit터미널에서 텍스트 편집기를 열어 작업하고 있다고 가정하겠습니다. 닫기 전에 터미널을 닫으면 터미널을 닫 gedit자마자 gedit도 닫힙니다. 무슨 일이야? 는 gedit터미널에서 자식 프로세스로 실행됩니다. 터미널을 닫으면 중단SIGHUP 프로세스 ( )가 하위 프로세스를 종료하는 프로세스로 전송됩니다.

반면에 gedit부모 터미널을 닫은 후에도 자식 프로세스 (여기서 )가 계속 실행되도록하려면 프로세스 면역이 끊기 신호를 원할 것입니다. 따라서 터미널을 닫으면 자식 프로세스가 닫히지 않습니다. nohup정확히이 일을합니다.

nohup터미널 에서 명령을 연결 해제하지 않으면 스크립트가 SIGHUP을 무시하고 stdout / stderr을 nohup.out 파일로 경로 재 지정하므로 로그 아웃 한 후에도 백그라운드에서 명령이 계속 실행될 수 있습니다. 쉘 / 터미널을 닫거나 로그 오프하면 명령이 더 이상 해당 쉘의 자식이 아닙니다. init 프로세스에 속합니다. 검색 pstree하면 프로세스 1 (init)이 소유하고 있음을 알 수 있습니다. 전경이 더 이상 존재하지 않으므로 전경으로 다시 가져올 수 없습니다.


16

@sourvac이 작성한 것 외에도 사람들이 텍스트 전용 벙어리 터미널, 종종 (원래 아날로그 110 보드) 모뎀을 통해 로그인 한 Back In The Day의 유산입니다. "전화 끊기"는 문자 그대로 "전화를 끊습니다" ".

전화 끊기 및 전화 끊기 후에도 끊기 신호에 영향을받지 않는 pid 는 계속 실행 됩니다. 시간이 지날 때까지 몇 시간 동안 작업을 실행했을 때 속도가 느린 컴퓨터 에서 매우 유용했습니다. 로그인 상태를 유지할 수 없었습니다. 다른 사람이 터미널을 사용해야하고 전화를 사용해야했습니다. 회선의 정적 연결이 "bzzt" 등).


1
그저 다시 돌아 오는 것이 아닙니다. 나는 ssh하는 서버 클러스터에서 대부분의 큰 작업을 실행합니다. nohup을 사용하지 않았다면 작업이 완료되기를 기다리는 동안 며칠 동안 랩탑을 해당 기계에 연결된 상태로 두어야합니다.
Ray

@Ray는 "at"또는 cron 작업으로 실행하는 것은 어떻습니까?
RonJohn

트윗 담아 가기 또는 그리드 엔진을 통해. 나는 nohup이 유일한 옵션이라고 제안하는 것이 아니라 오늘날에도 여전히이 목적으로 사용된다는 것입니다.
Ray

1
아마도 당신의 역사적 말이 맞을 수도 있습니다. 그러나 현재의 중요성에 대한 당신의 결론은 잘못되었습니다. 느린 컴퓨터에서는 유용하지 않지만 장시간 실행되는 작업에는 유용합니다. 이것들은 두 가지입니다. 'nohup'을 사용하여 의도하거나 의도하지 않은 터미널 연결이 끊어지지 않도록 작업을 보호하십시오. 오늘날에도 네트워크 오류로 인해 터미널 연결이 끊어지고 작업이 중단되어 작업이 중단되면 기쁘지 않습니다.
miracle173

@Ray Cron 작업은이를 달성하기에 완전히 부적절합니다. Cronjob은주기적인 작업을위한 것으로 Cronjob에서 환경을 설정하고 다른 많은 것들을 고려해야합니다. 아마도 'at'은 다루기가 약간 쉽지만 그럼에도 불구하고 nohup보다 더 복잡합니다.
miracle173
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.