У меня есть ситуация, когда у меня есть процесс, скажем, 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 задерживается, хотя его операции проверены на завершение?
top -n 1 -u script_pl_user | grep script.pl
, Мой главный вопрос остается, почему script.pl все еще появляется в top
а также ps
хотя операция, которую он должен был сделать, подтверждена, чтобы быть завершенной? Почему они торчат?
top
показывает толькоn
процессы, гдеn
зависит от размера терминала. По умолчанию он упорядочен по загрузке процессора, поэтому вы не увидите процессов, которые не слишком загружают процессор. Так почему вы ожидаете, что ваш скрипт должен быть указан в этом (усеченном) топ-списке?ps ax
показывает все процессы.