У меня есть процесс - сценарий 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 cat /usr/local/gw/var/popdmn.pid
"), работает безотказно.
В качестве обходного пути я запускаю screen на сервере с запущенным strace. Очевидно, это далеко не идеально.
Зачем процессу это делать? Я не видел этого раньше.
Кажется, меня укусил древний жучок strace:
https://bugzilla.redhat.com/show_bug.cgi?id=64303
https://bugzilla.redhat.com/show_bug.cgi?id=75709
На этой коробке есть strace-4.4-4, так что похоже, что это ошибка. Похоже, что это самоубийство, так как мы пытались отладить его, и стало только хуже.
kill -CONT
работает, чтобы возобновить процесс.
Определенно время обновить эту коробку.
Я полагаю, что самая большая разница в скорости и обработке сигналов.
Что касается скорости, если процесс многопоточный, тогда strace будет изменять время, что мое поведение меняет в отношении условий гонки и т. Д. или информация о времени, относящаяся к поведению протокола.
Пример. Допустим, сервер POP был обновлен и теперь более осторожен в обеспечении того, чтобы одноранговый узел не отправлял несколько команд POP одновременно. Это более полезно на SMTP-сервере как средство предотвращения спама.
Наблюдает ли ваш процесс правильное поведение POP, ожидая ответа от сервера после каждой команды POP? Или он предполагает успех или ждет некоторый промежуток времени между командами.
Если вы фиксируете фактический трафик протокола в случае прохождения и отказа, есть ли какие-либо признаки нарушения протокола?