(왜) Fedora는 종료 시 모든 프로세스를 제대로 종료하지 않습니까?

(왜) Fedora는 종료 시 모든 프로세스를 제대로 종료하지 않습니까?

Fedora 17에서는 종료 작업(예: shutdown -h now)이 훨씬 빨라졌습니다(최대 2초처럼 느껴짐). 그러면 실행 중인 프로세스가 제대로 종료되었는지 궁금합니다. 특히 Fedora에서는(역시 약 2초) 모든 프로세스가 완료되는 데 충분한 시간이 있다는 것을 거의 상상할 수 없습니다.

shutdown 명령이 실행되기 전에 모든 사용자 프로세스가 사용자에 의해 (수동으로) 닫혔다고 가정하고 있으므로 시스템 서비스만 남습니다(여전히 종료 시에도 할 일이 있을 수 있습니다).

그래서 나는 대부분의 신호를 포착하는 작은 프로그램을 작성했으며, 몇 초의 시간이 제공되면 종료되기 전에 기다릴 것입니다. 그 외에는 아무것도 하지 않습니다. 그런 다음 - 먼저 데비안 시스템에서 - 60초의 지연을 두고 시작했습니다. SIGHUP을 수신하면(상위 쉘이 종료되었다고 가정) 60초 카운트다운이 시작되었습니다. 10초 후 친근한 SIGTERM을 수신했습니다. 내 프로그램은 이 신호를 무시하고 카운트다운을 계속했습니다. 40초가 지나 비극적으로 종료될 때까지 말이죠. 따라서 종료(SIGHUP)하라는 지시를 받은 지 20초 후에 SIGKILL이 발생했습니다.

이제 Fedora 17(3.5.3-1.fc17.x86_64)에서 동일한 테스트를 수행합니다.

포착된 신호 1.
런타임: 8초
60초 동안 종료 지연 중...
60...
포착된 신호 15 - 무시합니다!
59...
58...

SIGHUP 후 1초도 지나지 않아 SIGTERM을 수신합니다. 프로그래머는 작업 완료, 설정 저장 등을 위해 SIGTERM 이후 프로그램 종료를 지연할 수 있습니다(SIGINT 이후와 달리). 내 프로그램은 종료되기까지 2초가 걸립니다.

일부 설정을 저장하는 동안(손상된 설정 파일?) 실행 중인 프로세스가 종료되거나 어떤 종류의 데몬(예: 일부 파일 서버)이 캐시된 데이터를 디스크에 쓰는 경우(손상된 데이터?) 어떻게 됩니까?

답변1

서비스는 파일에서 종료 방법을 지정할 수 있습니다 *.service. 원하는 제한 시간을 선택할 수 있으며 기본값을 그대로 사용할 필요는 없습니다. postgreSQL 또는 mysqld가 설치되어 있는 경우 해당 서비스 파일을 살펴보고 완전히 종료하는 방법을 확인하세요.

관련 정보