Як systemd пережив убивство -9?


28

Між останніми питаннями "Чому" вбиває -9 0 "закінчується сеансом консолі" та "Як отримати паніку з ядром", я потрапив під сідло і спробував kill -9 1на здебільшого сучасний ноутбук Arch Linux. Я зробив це як ідентифікатор користувача "root".

Я цілком очікував якогось аварії, паніки чи відключення, але нічого не сталося. Я kill -9 1знову зробив це , безрезультатно.

Машини Arch Linux працюють у systemdці дні, тож: як systemdвижити вбивство -9? Я думаю, що в ядрі Linux 3.7 є спеціальний код справи, але, можливо, існує якась інша причина, про яку я не думав.

Що з іншими речами, які працюють з PID 1? Slackware все ще використовує, initя вважаю, але мені страшно спробувати його на своєму виробництві Slackware-сервера. DD-WRT на моєму бездротовому маршрутизаторі працює / sbin / init.

Відповіді:


33

Від man 2 kill:

Єдині сигнали, які можуть бути надіслані до ідентифікатора обробки 1, процесу init - це сигнали, для яких init має явно встановлені обробники сигналів. Це робиться для того, щоб система не була зруйнована випадково.

Тобто, можна initробити все, що завгодно, після отримання SIGKILL(включаючи вихід), але init systemd не встановлює для цього жодного обробника сигналу, тому нічого не відбувається.


4
Дякуємо, що відзначили це. Цей специфічний Linux? Здається, я пам’ятаю, що на початку 90-х розбивали робочу станцію SunOS, вбиваючи Ініта помилково. Чи ні. У молодості я був набагато більш необачним.
Брюс Едігер

1
@BruceEdiger, я теж пам’ятаю, що пам’ятаю, що міг kill -9 initі викликати паніку з ядром. Здається, що він змінився в якийсь момент.
psusi

2
@BruceEdiger - я спробував це для сервера AIX та для HP-UX. Обидва повернули повідомлення про помилку: kill: 1: 0403-068 Сигнал недійсний для цього процесу АБО kill: 1: Зазначений процес не існує. Сторінка man спеціально зазначила, що це призведе до помилки. Мені багато людей говорять, що це можна було зробити раніше - але ніхто не досяг успіху за останні 10+ років.
DarkHeart

2
@BruceEdiger З деяких пошуків здається, що це нещодавня (принаймні, з точки зору життя Unix) розробка. На жаль, я не був живий на початку 90-х, тому коли це сталося, це поза моїми знаннями. Це було б цікаво дізнатися, оскільки, схоже, майже всі сучасні Союзи змінили цю поведінку за замовчуванням.
Кріс Даун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.