
次のことを実行するプロセス (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 されています。実行中は、pop サーバーにログインすることはありません。strace (「strace -Ff -p cat /usr/local/gw/var/popdmn.pid
」経由) されるとすぐに、問題なく動作します。
回避策として、strace を実行しながらサーバー上で screen を実行しています。明らかに、これは理想的ではありません。
なぜプロセスがこのようなことを行うのでしょうか? これまでにこのようなことは見たことがありません。
答え1
答え2
最大の違いは速度と信号処理だと思います。
速度に関しては、プロセスがマルチスレッド化されている場合、strace はタイミングを変更し、競合状態などに関する動作を変更します。またはプロトコルの動作に関連するタイミング情報。
例: POP サーバーがアップグレードされ、ピアが一度に複数の POP コマンドを送信しないように、より慎重になったとします。これは、スパム防止手段として SMTP サーバーでより役立ちます。
プロセスは、すべての POP コマンドの後にサーバーからの応答を待機するという、正しい POP 動作に従っていますか? または、成功を前提とするか、コマンド間で一定期間待機しますか。
合格と不合格のケースで実際のプロトコル トラフィックをキャプチャすると、プロトコル違反の兆候はありますか?