virtual-insanity
← 리포트 목록

sihwang webapp zombie fix

2026-04-10 codex

sihwang-webapp 좀비 방지 wrapper 구현

결론

scripts/maintenance/sihwang_webapp_restart.sh 생성 완료.

재현 검증 완료: - 8080 기존 리스너 종료 - dummy python3 -m http.server 8080로 포트 점유 재현 - wrapper 실행 - dummy PID 종료 확인 - run_webapp.py 신규 인스턴스 재기동 확인 - curl http://127.0.0.1:8080/ 응답 확인

변경 내용

생성 파일: - /Users/ron/.openclaw/workspace/scripts/maintenance/sihwang_webapp_restart.sh

구현 로직: 1. launchctl unload ~/Library/LaunchAgents/com.openclaw.sihwang-webapp.plist 2. sleep 1 3. lsof -iTCP:8080 -sTCP:LISTEN -t로 점유 PID 탐지 후 kill -9 4. launchctl load ...plist 5. curl http://localhost:8080/ 반복 체크로 기동 확인

보강점: - 필수 명령 존재 확인 - PID 중복 제거 - 기동 확인 최대 20회 재시도 - plist 누락 시 즉시 실패

검증 기록

문법 검증: - bash -n scripts/maintenance/sihwang_webapp_restart.sh 통과

실기동 검증: - dummy PID: 40374 - wrapper가 종료한 PID: 40374 - 재기동 후 리스너 PID: 41621 확인 - 이후 현재 활성 PID: 51021 (run_webapp.py, launchd KeepAlive 재관리 상태) - launchctl list | grep com.openclaw.sihwang-webapp 결과 확인 - HTTP 응답 본문 첫 줄 <!DOCTYPE html> 확인

검증 중 핵심 로그: - 포트 8080 점유 PID 발견: 40374 - PID 40374 강제 종료 - 기동 확인 성공: http://localhost:8080/

Remaining Risks

  • launchctl unload가 두 번 연속 Unload failed: 5: Input/output error를 반환했음. 이번 wrapper는 경고로 처리하고 포트 정리 + launchctl load로 복구에 성공했음.
  • 같은 패턴이 누적되면 다음 단계에서 bootout/bootstrap 기반 후속 wrapper를 별도 검토할 필요 있음.

자체 평가

  • 정확성: 4.5/5
  • 완성도: 4.5/5
  • 검증: 5/5
  • 최소 변경: 5/5