
나는 다음을 수행하는 프로세스(perl 스크립트)를 가지고 있습니다.
while true
check a POP account on a server on the lan
process any email found
write logs - messages found, actions taken, errors
sleep for 15 seconds
Redhat 7.3 서버에서 실행되고 있습니다. (저는 그것을 상속받았습니다. 그 상자의 나이가 마음에 들지 않습니다.) 다음과 같이 /etc/inittab이 부족합니다.
spop:2345:respawn:/usr/local/gw/bin/popdmn
죽으면 init가 다시 시작합니다.
지난 며칠 동안 프로세스가 더 이상 작동하지 않습니다.~하지 않는 한그것은 추적됩니다. 방금 실행 중일 때는 팝 서버에 로그인하지 않습니다. ("strace -Ff -p "를 통해) strace가 완료되자마자 cat /usr/local/gw/var/popdmn.pid
완벽하게 작동합니다.
해결 방법으로 strace가 실행되는 서버에서 screen을 실행하고 있습니다. 분명히 이것은 이상적이지 않습니다.
프로세스가 왜 이런 일을 할까요? 나는 전에 이런 일이 일어나는 것을 본 적이 없습니다.
답변1
내 생각엔 고대의 추적 버그에 물린 것 같아요.
https://bugzilla.redhat.com/show_bug.cgi?id=64303
https://bugzilla.redhat.com/show_bug.cgi?id=75709
이 상자에는 strace-4.4-4가 있으므로 해당 버그일 가능성이 있는 것 같습니다. 디버깅을 시도하는 동안 추적을 하다가 상황이 더욱 악화되었기 때문에 이는 자해인 것처럼 들립니다.
kill -CONT
프로세스를 재개하기 위해 노력합니다.
분명히이 상자를 업그레이드할 시간입니다.
답변2
가장 큰 차이점은 속도와 신호 처리라고 생각합니다.
속도와 관련하여 프로세스가 다중 스레드인 경우 strace는 타이밍을 변경하여 경쟁 조건 등에 관한 동작을 변경합니다.또는프로토콜 동작과 관련된 타이밍 정보.
예. POP 서버가 업그레이드되어 이제 피어가 한 번에 여러 POP 명령을 보내지 않도록 더욱 주의를 기울이고 있다고 가정해 보겠습니다. 이는 스팸 방지 수단으로 SMTP 서버에서 더 유용합니다.
귀하의 프로세스는 각각의 모든 POP 명령 후에 서버의 응답을 기다린다는 점에서 올바른 POP 동작을 관찰합니까? 아니면 성공을 가정하거나 명령 사이에 일정 시간을 기다립니다.
합격 및 불합격 사례에서 실제 프로토콜 트래픽을 캡처하는 경우 프로토콜 위반 징후가 있습니까?