왜 데몬이 필요한가요? [폐쇄]

왜 데몬이 필요한가요? [폐쇄]

나는 데몬을 생성하는 방법을 읽고 이해했지만 읽은 모든 것에서 전혀 이해하지 못했습니다.이 작업을 수행해야 합니다.

터미널 제어권을 얻는 과정을 피하기 위해 fork-setsid-fork를 수행한다는 내용을 읽었는데, 그게 무슨 뜻인가요? &를 사용하여 백그라운드에서 프로그램(예: './script &')을 시작하는 경우, 자체적으로 데몬으로 바뀌는 프로그램을 정상적으로 실행하는 경우와 다르게 이 프로세스가 실행되는 이유는 무엇입니까?

이는 로그아웃하면 백그라운드 프로세스가 중지되고 데몬이 계속 실행된다는 의미입니까? 나는 "터미널 제어권 확보"를 이해하는 데 정말 어려움을 겪고 있습니다.

이것이 나를 괴롭히는 이유는 로봇에 임베디드 RPi를 개발하고 있기 때문에 부팅 시 프로그램이 시작되도록 해야 하기 때문입니다. 현재는 다음과 같은 명령을 사용하여 rc.local에서 시작합니다 su user -c 'python /home/user/launcher.py &' &. 부팅 시 프로그램이 시작되는 데 문제가 발생한 적이 없지만(SSH를 통해 RPi에 연결할 때 사용되는 프로세스도 볼 수 있습니다 ps -e) 위험이 있는지/나쁜 습관인지 궁금합니다.

답변1

이것은 단지 하나의 질문이 아닙니다. 모든 질문에는 긴 답변이 있습니다. 간단히

  • &를 사용하여 백그라운드에서 프로그램(예: './script &')을 시작하는 경우, 자체적으로 데몬으로 바뀌는 프로그램을 정상적으로 실행하는 경우와 다르게 이 프로세스가 실행되는 이유는 무엇입니까?

    프로그램을 백그라운드에서 실행하면 더 이상 터미널에서 직접 제어할 수 없지만(단순히 제어할 수는 없음 ^C) 여전히 터미널에 쓰고 작업을 방해할 수 있습니다. 일반적으로 데몬은 터미널에서 자체적으로 분리되고(포킹 제외) 출력/오류가 파일로 리디렉션됩니다.

  • 이는 로그아웃하면 백그라운드 프로세스가 중지되고 데몬이 계속 실행된다는 의미입니까?

    백그라운드 프로세스는 보호될 수 있지만 nohup출력이 리디렉션되지 않는 한 터미널을 닫으면 쓰기가 방지되어 중지될 수 있는 오류가 발생합니다.

  • 위험이 있는지/이것이 나쁜 습관인지 궁금합니다.

    프로그램의 출력(및 오류 메시지)을 추적하는 문제 외에도 프로그램이 멈춘 경우 다시 시작하는 문제도 있습니다. 서비스 스크립트는 시스템의 다른 서비스가 설계된 방식에 적합하여 데몬을 제어하는 ​​다소 표준적인 방법을 제공합니다.

관련 정보