명시적으로 프로그램을 포그라운드에서(데몬 대신) 실행해야 합니까, 아니면 upstart 데몬을 구성할 때 '포크'를 기대해야 합니까?

명시적으로 프로그램을 포그라운드에서(데몬 대신) 실행해야 합니까, 아니면 upstart 데몬을 구성할 때 '포크'를 기대해야 합니까?

많은 프로그램은 데몬 모드(일반적으로 기본값)에서 실행되거나 -f.

이제 이와 같은 프로그램을 실행하도록 Upstart를 구성할 때 다음 중 하나를 수행할 수 있습니다.

exec foo -f # run in foreground

또는

expect fork
exec foo # automatically runs as a daemon

다른 것보다 하나를 선택하는 이유가 있습니까? 모든 것을 포그라운드에서 실행하고 Upstart가 프로세스를 처리하도록 하는 것이 더 쉽다고 느껴지지만, 단점이 있습니까?

답변1

나는 전경에서 작업을 실행하는 것을 매우 선호합니다. 이는 데몬화 프로세스에서 발생할 수 있는 모든 합병증을 방지합니다(예: 장기 실행 데몬 프로세스를 추적하지 못하는 신생 기업). 이에 대한 유일한 예외는 "포그라운드에서 실행하십시오"를 "일종의 성능이 낮은 디버그 모드에서 실행하십시오"로 해석하고 하나의 스레드만 실행하는 것과 같은 어리석은 작업을 수행하는 불쾌한 습관이 있는 소수의 데몬화 프로그램입니다. , 또는 하위 작업자를 생성하지 마십시오.

관련 정보