계속 실행해야하는 프로그램을 작성했습니다. 하지만 나쁜 프로그래머 때문에 매번 충돌이 일어납니다. 다른 프로그램에서 시청하고 충돌이 발생하면 다시 시작하는 방법이 있습니까?linux - 프로그램이 죽었는지 확인
답변
당신이 나쁜 프로그래머라면, 시청 프로그래밍이 실패하지 않는다고 말하는 것입니다.) 그리고이 문제가 발생하지 않도록 더 잘해야합니다 (이런 이유로). 즉, 결국 다음과 같은 대답이 필요할 것입니다.
그러나 더 나은 방법이 없으면 정기적 인 간격으로 'ps'의 출력에서 프로그램 이름을 찾는 cron 작업을 실행하십시오. 그리고 그 대답은 당신이 superuser.com
Stackoverflow는 프로그래밍 사이트이므로 그러한 감시자를 구현하는 방법에 대한 개요를 설명하겠습니다.
먼저 알아야 할 것은 감시자가 본 프로그램을 직접 시작해야한다는 것입니다. fork
및 exec
을 사용하면됩니다.
다음은 프로그램 종료를 기다리는 것입니다. 특정 요구에 따라 대기 시스템 호출 (예 : wait
, waitpid
또는 wait4
)을 사용할 수 있습니다. SIGCHLD
을 붙잡아서 자녀가 퇴장 할 때 비동기 적으로 정보를 얻을 수 있습니다 (상태를 얻으려면 wait
로 전화해야합니다).
상태가되었으므로 매크로가 WIFSIGNALED
인 신호 때문에 프로세스가 중지되었는지 알 수 있습니다. 해당 매크로가 true를 반환하면 프로그램이 중단되고 다시 시작해야합니다. 다시 시작할 때 당신이 그것을 모니터링 다른 작업이있는 경우
사용할 수 있습니다 ... 그것은 여전히 아래로 짧은 시간이있을 것이다.
또한 네트워크 (또는 로컬) 서버 프로세스로 작동하는 경우 진행중인 요청에 대한 모든 상태가 손실됩니다. 나는 이것이 (물론 당신의 클라이언트가 내장 된 타임 아웃과 재시도를 가지고 있을지도 모른다) 괜찮 으면 좋겠다.
는 모든 영구 데이터를 저장하는 중간에있는 동안 프로세스가 충돌하는 경우가 수를하려는 경우 마지막으로, 나는
그러나 등은 반 작성된 파일에 대처하는 메커니즘을 가지고 희망 견고하고,이 모든 것들은 어쨌든 사실이어야합니다. 그래서 감독관과 같은 것을 안전하게 사용할 수 있습니다.
나는 내 프로그램과 서비스를 살펴보기 위해 Monit을 사용합니다.
- 1. 버스 오류 - 프로그램이 어디에서 죽었는지 어떻게 알 수 있습니까?
- 2. 코코아에서 서브 프로세스가 죽었는지 확인하십시오.
- 3. ld-linux - 종료 코드 확인
- 4. AppleScript에서 응용 프로그램이 시작되었는지 확인
- 5. 링크가 죽었는지 또는 웹 페이지를 다운로드하지 않고 파이썬을 사용하지 않는지 확인
- 6. 어떻게 프로그램이 추락했는지 안드로이드를 확인 하시겠습니까?
- 7. C++을 통해 Linux에 프로그램이 설치되었는지 확인
- 8. Autoconf : 지원되지 않는 언어의 프로그램이 컴파일되었는지 확인
- 9. 응용 프로그램이 사용자의 화면 해상도와 독립적인지 확인
- 10. Windows XP/2003에서 linux ptrace syscall과 같은 프로그램이 있습니까?
- 11. .NET 응용 프로그램이 원격 Linux 서버로 데이터를 내 보냅니다.
- 12. Qt GUI 응용 프로그램이 이미 실행되고 있는지 확인하는 방법 (Linux)?
- 13. Linux 응용 프로그램이 수신 대기중인 IP 포트를 가상화하는 방법은 무엇입니까?
- 14. 여러 개의 실행중인 인터페이스가있는 컴퓨터에서 Linux 호스트 이름 확인
- 15. 설치 스크립트가 Mac 또는 Linux 컴퓨터에서 실행되는지 확인
- 16. Process 클래스를 사용하여 콘솔 응용 프로그램이 아직 실행 중인지 확인
- 17. 응용 프로그램이 응용 프로그램 서버에서 실행되고 있는지 확인
- 18. 내 응용 프로그램이 활성화되기 바로 전에 어떤 윈도우가 활성화되었는지 확인
- 19. tomcat 및 웹 응용 프로그램이 모두 성공적으로 시작되었는지 확인
- 20. apposed에서 as first로 시작하는 응용 프로그램이 비활성 상태인지 확인 하시겠습니까?
- 21. 로드 된 GAC의 DLL이있는 응용 프로그램이 있는지 확인
- 22. LINUX : 프로덕션 머신 업그레이드
- 23. Linux 프로그램의 경로 관리
- 24. Linux AMI에 설치할 Linux 패키지를 어떻게 알 수 있습니까?
- 25. Linux 앱은 소켓
- 26. Linux 컴퓨터에서 PTRACE_SINGLESTEP
- 27. Pervasive & Linux
- 28. Linux TCP 소켓 충돌
- 29. Android DDMS에서 프로그램이 실패한 행을 표시 할 수 있습니까?
- 30. 프로세스 모니터링 - Python/Ubuntu/Linux
잘못된 프로그래밍으로 인해 충돌이 발생하면 더 나은 프로그래머가되고 연습을 해보고 프로그램과 디자인을 향상시켜 충돌을 일으키지 않도록하십시오. 그렇다면이 과정을 거치지 않아도됩니다. –
불행히도, 상사는이 품질의 코드를 배송하는 것을 좋아합니다. –
@DeSimone - 처음부터 올바르게하는 것보다 두 번하는 것이 더 저렴하기 때문입니다. – KevinDTimm