우리는 X에서 시작하는 Java 애플리케이션을 사용하고 있습니다./etc/X11/Xsessions.d/9999ngoma
root@denis-laptop:~# uname -a
Linux denis-laptop 2.6.32-36-generic #79-Ubuntu SMP Tue Nov 8 22:29:26 UTC 2011 i686 GNU/Linux
원래는 GDM의 전체 화면 대체품으로 개발되었습니다. 시스템의 전원이 꺼지면 애플리케이션이 SIGTERM 대신 SIGKILL을 받는 것처럼 보입니다(이것이 일부 리소스가 디스크에 저장되지 않는 이유입니다).
어떻게 이런 일이 일어날 수 있습니까?
또한 응용 프로그램이 /etc/X11/Xsessions.d/9999ngoma
.exclusive에서 독점적으로 로드된다는 점을 다시 한 번 경고해야 합니다. 이는 Gnome이 응용 프로그램이 종료된 후에만 로드된다는 의미입니다(X에서 응용 프로그램을 독점적으로 실행하는 다른 방법은 모르겠습니다). GDM이 SIGTERM을 수신한 다음 GDM 세션 초기화 프로세스(Xsession.d 디렉터리의 스크립트) 중에 완료되지 않은 SIGKILL 하위 키를 수신했을 가능성이 있습니까?
답변1
애플리케이션, 상위 프로세스 또는 상위 프로세스 중 하나가 SIGTERM 신호를 무시하도록 설정했을 수 있습니다. 이 설정은 fork() 호출 전체에서 상속되며 exec() 전체에서 변경되지 않고 유지됩니다.
개별 프로세스에서 strace(1)을 사용하고 수동으로 SIGTERM을 전송하여 이 문제를 추가로 진단할 수 있습니다. 추적 출력에 신호가 수신되고 있음이 표시되면 이를 무시하지 않습니다.