У меня есть ситуация, когда у меня есть процесс, скажем, script.pl
(здесь он есть), который, кажется, задерживается в выводе на ps auxw | grep script.pl
, иногда, когда нагрузка велика , она задерживается на несколько минут. Этот сценарий вызывается 5-10 раз в секунду другим процессом (этот процесс выполняет неблокирующий вызов сценария, например: System(/some/path/script.pl &)
).
Сначала я волновался, что этот сценарий по какой-то причине не может быть завершен своевременно и, таким образом, замедляет другие вещи. Однако все, что делает скрипт - это записывает сообщение в другой ящик через сокет TCP.
И вот тут все становится странным. 1) Я могу проверить, завершается ли эта операция с сокетом (единственное, что делает скрипт), просматривая журналы в другом окне - он получает сообщение немедленно и вовремя. 2) Несмотря на то, что я вижу много экземпляров (казалось бы завершенных) экземпляров script.pl
в выводе ps
, я не вижу соответствующих записей, если я делаю что-то вроде top -n 1 | grep script.pl
- это указывает на то, что script.pl
не использует никаких ресурсов; на самом деле в этом выводе нет ни одного экземпляра script.pl
.
Итак, наконец, есть ли известные проблемы с ps
или интерпретатором Perl, которые могут привести к зависанию завершенных скриптов Perl в выводе ps
, но не в выводе top
?
Спасибо!
РЕДАКТИРОВАТЬ: я изменил вызов верхней команды на: top -n 1 -u script_pl_user | grep script.pl
. Теперь процесс проявляется одинаково в обоих местах. Тем не менее, top
показано, что загрузка ЦП составляет 0,0%, а использование памяти отсутствует или очень или очень очень мало. Почему скрипт script.pl задерживается, хотя его операции проверены на завершение?