2012-08-10 3 views
0

특정 서버에서 telnet/ssh 명령을 사용하여 특정 시뮬레이터 progrmam을 실행하고 프로그램이 SIGTERM을 사용하여 종료합니다 (대화식으로 "exit"문자열을 입력하지 않은 경우).내 프로그램이 SIGTERM을받지 못하는 이유는 무엇입니까?

프로그램은 일반적으로 telnet/ssh 세션을 직접 종료 할 때 대부분의 서버에서 종료됩니다. 그러나 특정 서버에서 시뮬레이터는 SIGTERM 신호를 수신하지 않으며 ROOT 프로세스의 하위로 계속 실행됩니다. 그런 다음 매달린 프로세스는 많은 CPU 리소스를 소비합니다.

아무도 나를 볼 수있는 도움을 줄 수 있습니까? 아니면이 상황을 어떻게 해결할 것인가?

덕분에, 케빈

+0

제대로 닫히지 않을 서버를 알고 있다면 로그 아웃하기 전에 명시 적으로 죽이지 않는 이유는 무엇입니까? –

+0

잘 정상적으로, 우리가 할 것입니다. 그러나 서버에 텔넷을 보내고 시뮬레이터를 실행하면 자동화 프로그램에 의해 자동으로 시작됩니다. 때로는 자동화 프로그램이 복잡성으로 인해 정상적으로 종료되지 않을 수도 있습니다. 그래서 ... –

+0

SIGTERM이 전달되지 않은 서버는 무엇입니까? 이 서버와 SIGTERM을 제공하는 서버의 차이점은 무엇입니까? 그들이 운영하는 운영 체제 및 ssh/telnet 데몬 소프트웨어는 무엇입니까? 어떤 버전입니까? – dave4420

답변

0

  1. 이 시뮬레이터 프로그램을 실행하는 래퍼 프로그램을 작성
  2. 시뮬레이터가 종료 자체를 종료 할 때
  3. 는 루트 프로세스의 자식이, 시뮬레이터에 SIGTERM을 보낸다. (그리고 나서 효과가 없다면 몇 초 후에 SIGKILL한다.)

이것은 끔찍한 해킹이 될 수 있지만, 지금까지 제공 한 정보를 바탕으로 제안 할 수있는 최선의 방법입니다.

+0

Dave, 답변 해 주셔서 감사합니다! 실제로 시뮬레이터는 래퍼에 의해 시작되었습니다. 나는 다른 서버간에 다른 것이 있는지보기 위해 래퍼 자체가받은 신호를 덤프하기 위해 래퍼를 사용할 수 있다고 생각한다. 너에게 다시 돌아갈 게. –

관련 문제