nohup 명령이 작동하지 않는 이유는 무엇입니까?

nohup 명령이 작동하지 않는 이유는 무엇입니까?

표시된 예를 알려주십시오.nohup나중에 프로그램 작업도 logout. nohupNET에서도 명령 없이 백그라운드에서 스크립트를 실행하는 데 사용해 보았습니다 logout.

예:

ping google.com > ping_result &

그런 다음 로그아웃했다가 다시 로그인하면 파일 내용이 늘어나는 것을 볼 수 있습니다. 이는 ping이 계속 실행 중임을 의미합니다. 그러나 그래서는 안됩니다.

답변1

터미널에서 이 명령을 실행하세요.

/bin/sleep 1000 &

다른 터미널에서 프로세스가 실행 중인지 확인합니다.

pgrep -fa sleep (과정은 그림에 나와있습니다)

이제 첫 번째 터미널을 닫거나 로그아웃하세요. 다시 확인하세요:

pgrep -fa sleep
(보여주지 마시오)


nohup첫 번째 명령에 추가된 단계를 반복합니다.

nohup /bin/sleep 1000 &

두 번째 검사에서는 프로세스가 여전히 실행 중임을 알 수 있습니다.

답변2

음, 여기 예가 있습니다. 입력하다:

nohup find -size +100k > log.txt

그리고 로그아웃하세요. 그런 다음 다시 로그인하여 log.txt 파일을 확인하세요.

추가 정보:Linux 및 Unix nohup 명령

답변3

nohup은 터미널이 없을 때 터미널에 쓰려고 시도하는 프로세스를 "종료"(신호 정지 방지, SIGHUP 및 man 7 신호 참조)하지 않습니다.

프로세스가 터미널에 쓰지 않는 경우 nohup이 필요하지 않습니다. 프로세스는 종료되거나 완료될 때까지 유지됩니다. 그러나 많은 프로세스는 실행 중에 터미널에 쓰기를 시도하며, 터미널이 없는 경우(예: 로그아웃으로 인해) "정지" 신호를 보내고 종료됩니다. nohup은 이러한 일이 발생하지 않도록 방지하지만 모든 출력을 파일로 리디렉션하고 백그라운드에 배치하여(Command &> File&) 이를 수동으로 방지할 수 있습니다.
nohup은 이 프로세스를 자동화합니다.

nohup은 같은 이유로 터미널 입력이 손실된 경우 종료를 방지할 수도 있지만 이 사용법은 덜 일반적입니다(nohup은 터미널/표준 입력이 아닌 /dev/null을 입력으로 리디렉션합니다)

답변4

원격 로그인에 대한 솔루션을 생각해 냈습니다.

nohup을 사용하여 프로세스를 시작한 터미널이 종료되어도 해당 프로세스는 계속 실행됩니다. 다만, exitor Ctrl+ logout 만 사용하면 D되지 않으나, 그래픽 로그인에서 로그아웃했다면 로그아웃도 가능합니다.

관련 정보