Персистентный знак процесса-зомби ошибки?

Вы в значительной степени пытаетесь переосмыслить tar или подобные форматы архивации; не ожидайте делать вещи вручную для EA, чем использование существующих инструментов.

Если Вы настаиваете на пользовательской границе (который опасен, поскольку эта граница могла появиться естественно в одном из jpeg файлов), заставьте его запуститься и закончитесь новой строкой. Это упростит обработку с awk.

Я рекомендую разделить каждый файл, но ограничить количество файлов на каталог к достаточно маленькому количеству, которое не вызывает хит производительности. С одним файлом каждые 5 секунд, вложенная структура дня/часа/минуты дает максимальное ветвление 366/60/20, который должен быть в порядке мудр производительностью.

Если Вы хотите использовать архивы, и, учитывая отсутствие r команда в tar Busybox, Вы могли хранить файлы N в файловой системе, затем периодически сделать архив с существующими файлами и убрать большой список. Например, для создания архива каждыми 100 файлами:

set -- *
if [ $# -gt 100 ]; then
  set ../archives/*.tar
  eval "last=\${$#}"
  last=${last%[!0-9]}; last=${last##[!0-9]}
  tar cf ../archives/$((last+1)).tar -- *
  rm -- *
fi
6
29.04.2013, 11:34
5 ответов

Наблюдение зомби имеет тенденцию указывать на ошибку в процессе, который породил их: тот процесс, как предполагается, пожинает зомби (путем вызова wait) или явно проигнорируйте SIGCLD (или набор SA_NOCLDWAIT флаг).

Однако это - незначительная ошибка. Процессы-зомби только используют запись в таблице процессов, которая является незначительной суммой ресурсов. Проблема только становится значительной, если процесс оставляет тысячи зомби.

Вы не уничтожили родительский процесс зомби: иначе зомби ушел бы. Обработайте 29673 (родитель зомби) является все еще живым и здоровым (но нет waitлуг). Или это не Gvim, но некоторый подпроцесс его, или Вы закрыли окно Gvim, но программа все еще работает. Выполненный ps l 29673 видеть, каков этот процесс.

2
27.01.2020, 20:27
  • 1
    Да, Вы абсолютно корректны. Проблема где-нибудь между пользователем и клавиатурой - как после окончания Gvim :q Я искал PID, но не нашел его. Должно быть, ввел неправильно. (Очень смущающий). Тот процесс (29673) был не процессом Gvim без cmdline и 1 как PPID. Самая странная небольшая вещь. Но; узнали вполне немного о зомби, какой и почему так или иначе, таким образом, не полное поражение :) –  Zimzalabim 30.04.2013, 13:32

Если бы Вы непрерывно встречаетесь с процессом-зомби, я был бы склонен думать, что существует определенно что-то не так. Процесс-зомби действительно происходит. Я обычно вижу некоторых месяц в различных системах, которые я обслуживаю и на работе и домой.

Обычно они могут составляться из-за ошибки оператора или к проблеме с конкретной частью программного обеспечения. Перезагрузки обычно разрешают их, и они обычно не происходят снова в течение некоторого времени.

Если они беспокоят Вас, можно попытаться присоединить к их идентификатору родительского процесса (PPID) использование gdb для наблюдения, что произошло или даже пытается уничтожить их:

$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit

Если Вы до него, я прочитал эти дополнительные ресурсы ниже для других методов при попытке иметь дело с ними.

Ссылки

2
27.01.2020, 20:27
  • 1
    Вы означаете присоединение порождать PID? Как зомби только находятся как часть таблицы процессов в ядре. Это имеет нет /mem или другие ресурсы – так a gdb бесполезно. (Если я понимаю это правильно). –  Zimzalabim 29.04.2013, 12:33
  • 2
    Извините, что должен иметь готовый PPID, не просто PID. Можно обратиться к этому URL, они показывают пример, где они соединяются с PPID: stupefydeveloper.blogspot.com/2008/12/linux-zombies.html –  slm♦ 29.04.2013, 15:52

Это происходит каждый раз, когда Вы используете gvim? Работы gvim кроме отъезда зомби после того, как это выходит? Если это не вызывает настоящие проблемы, я просто проигнорировал бы его - зомби не облагают налогом ресурсы системы. Я не был бы удивлен, была ли это ошибка в gvim - или возможно в gtk, но если программа не работает вообще, я проигнорировал бы его.

Процесс зомби / более не существующий процесс обычно происходят, когда дочерний процесс выходит перед родительским запуском, слушая его. Ребенок "слоняется поблизости", потому что не было никакой программы вокруг для получения, это - статус выхода, даже при том, что это сделало завершенный удовлетворительный - следовательно это становится зомби. Другая причина Вы получаете зомби, может быть, когда большое дерево процесса прибывает, падая - возможно, потому что кто-то попытался уничтожить один или несколько процессов в дереве.

Зомби является действительно путем к ОС для хранения статуса выхода и другой информации о процессе, который не завершался вполне правильно вокруг, в случае, если кому-либо интересно. Кроме записи в таблице процессов, зомби не поднимает ресурсов (т.е. никакой памяти или CPU).

По моему скромному мнению, Википедия является неправильной - или по крайней мере легкой неправильно понять - когда она утверждает, что не пожинавшие зомби имеют в виду ошибку с ОС, если они задерживаются после основного процесса она была порождена выходами. Весьма обычно, что зомби выживает, это - родители, в этом случае это принято init (PID 1). init может в конечном счете пожинать его, но некоторые зомби - даже принятые init - могут остаться до перезагрузки. Пока у Вас нет такого количества зомби, что они заполнение таблица процессов, они - едва любая проблема.

Конечно, зомби действительно часто показывают, что что-то неправильно - что программа порождает ребенка, который умирает, прежде чем родитель ожидает - но это не должна быть ОС, которая является проблемой. Это, конечно, могут быть компоненты ОС, которые вызывают его хотя - например, отсутствие или malconfigured звуковой сервер, причины дочерние процессы, которые, как предполагают, обработали звук для программы для выхода сразу, таким образом слоняясь поблизости как зомби.

1
27.01.2020, 20:27
  • 1
    это только происходит эпизодически. Это - больше случай любопытства затем проблема. Поскольку это является довольно нечастым, мне трудно отладить – при помощи gdb и т.п. gvim также часто загрязняет терминал чем-то как LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent. – Но это только происходит на выходе. (или :q). Зомби кажутся в то время как активными или спящими. –  Zimzalabim 29.04.2013, 12:50
  • 2
    Нет, WP корректен: зомби, который остается для ненезначительного количества времени, указывает на ошибку где-нибудь. Не в ОС: в родителе зомби (или иногда в самом ребенке, если это, как предполагалось, не умерло так скоро). Если родитель умирает, init будет пожинать зомби, как только это видит его. –  Gilles 'SO- stop being evil' 30.04.2013, 03:01

Как всегда - это зависит. Большинство контрольных инструментов станет желтым или красным из, они встречаются с больше, чем определенное число процессов-зомби.

Так в основном - да - это обычно - знак проблемы.

Но я видел программы, которые порождают процессы-зомби как часть их "нормальных" операций. Эти процессы-зомби ушли, когда согласно высокоуровневому API (я не говорю, что родительский процесс здесь) был назван с командой "выхода/выхода".

Таким образом в этих случаях кажется, что приложение заботилось (и возможно нуждался), эти зомби. Таким образом для контроля я должен был определить исключение на серверах, куда эти приложения работали.

В других случаях зомби ушли после короткого времени - таким образом, у Вас могут быть определенные состояния non-persistent-system с процессами-зомби.

В Вашем случае: Если gvim сделан не должно быть никакого оставленного зомби - так propably ошибка.

1
27.01.2020, 20:27

В Unix/Linux новые процессы создаются fork(2) системный вызов (или некоторые в сахаре - по версии его, или возможно другим вариантом clone(2)). Это - обязанность родителя сделать вариант wait(2) собрать статус выхода дочернего процесса (если родитель заканчивается перед ребенком, init(8) добирается для заботы о висячей строке). Завершенный процесс, статус выхода которого не был собран, является зомби. Зомби являются знаком безответственного статуса родителя.

1
27.01.2020, 20:27

Теги

Похожие вопросы