Чи існує механізм в Unix (або Linux), щоб зупинити незавершений дамп ядра?


15

Скажімо, (дуже) великий процес розбиває і скидає ядро, і ми знаємо причину з іншої інформації (можливо, повідомлення про затвердження, можливо, щось інше).

Чи є спосіб запобігти повній генерації дампів ядра, оскільки в цьому випадку це марно?

Наприклад, вбивство -9 основного демпінгового процесу перерве генерацію основних файлів?

Очевидно, якби ми заздалегідь знали, що не хочемо ядерних дампів, ми могли б встановити прошивку відповідним чином або використовувати різні утиліти управління основними файлами ОС.

Але це питання стосується етапу "основного сміттєзвалища, що вже триває" ...

(Наприклад, уявіть, що я запитувач /programming/18368242/how-to-bypass-a-2tb-core-dump-file-system-limit і не хочу марнувати 5 -6 ТБ місця на диску :))


У Linux ви можете відключити створення базового дампа ... чи це може бути варіант?
krisFR

Ні - основні скиди необхідні загалом, але ми просто шукаємо спосіб зупинити їх у тих випадках, коли ми знаємо, у чому проблема, не потребуючи ядра, щоб заощадити час / дисковий простір / тощо .... Звичайно, ми можемо просто видалити ядро, як тільки це буде здійснено демпінгом (або навіть від’єднати його перед цим), але немає причин пов’язати кілька концертів місця на диску, якщо ми могли просто вбити основний дамп раніше.
Майк Г.

Можливо, ви можете використовувати "cat / dev / null> <path_to_core>" у скрипті, що викликає програму, коли виконується певна умова, щоб, поки існує запис / proc / <pid>, спати кожні кілька секунд і запускати / dev / null копія в основний файл. Це зведе нанівець. Я не впевнений у повному контексті питання, але це може спрацювати.
Schrute

Шруте, це матиме такий же ефект, як і відключення серцевини, чи не так? Дисковий простір і системні ресурси все одно будуть використовуватися до тих пір, поки ядро ​​не закінчить писати - розмір файлу просто не буде видно в ду або ls.
Майк Г.

Ресурси так, однак це звичайний метод для роботи з великим файлом, таким як файл core / log, а не зупиняти PID. Це просто залежить від того, яка мета.
Schrute

Відповіді:


8

Взагалі: ні, немає ніякого способу надійного вбивства збивача.

Але, мабуть, існує можливість (принаймні в Linux) для комерційного * NIX, мабуть, жодного способу

Можливість полягає в тому, що серія 3.x ядра здатна перервати запис файлів. Одна з можливостей - знайти нитку, яка виконує демпінг, і кілька разів надсилати їй SIGKILL, поки це не вдасться.

Ця серія виправлень виправляє проблему до деякого рівня.

Інша можливість полягає у використанні альтернативного синтаксису для coredump_pattern. У посібнику йдеться про те, що з 2.6.19 замість шаблону ви можете використовувати трубу та програму (з парами), яка буде обробляти дамп. Ерго, ви будете контролювати, який дамп буде записаний туди, де (/ dev / null є очевидним кандидатом для ваших марних ядер).

Цей патч також заслуговує на трохи уваги: http://linux.derkeiler.com/Mailing-Lists/Kernel/2010-06/msg00918.html


Дякую зерідон - це, безумовно, найкраща відповідь поки що.
Майк Г.

Я б подумав, що якщо ви використовуєте механізм трубопроводів, ви можете просто вийти, не читаючи дані труби, якщо знаєте, що не те, що ви хочете зберегти (якщо зламані труби не створюють іншої проблеми ... потрібно було б це перевірити.)
Алексіс Вілке

0

перевірте це посилання, воно може бути корисним

https://publib.boulder.ibm.com/httpserv/ihsdiag/coredumps.html


Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Том О'Коннор

Дякую, Хамед, але, хоча в цьому посиланні є багато цікавої інформації, я не думаю, що він відповідає на моє запитання (якщо я його не пропустив - я ще не все, що прокинувся :))
Майк Г.

-1

Схоже, ви можете запустити ulimit -c (якщо ви використовуєте bash), щоб обмежити розмір основного дампа.

Дивіться: /ubuntu/220905/how-to-remove-limit-on-core-dump-file-size

і

http://ss64.com/bash/ulimit.html


1
Керрі, як я вже говорив в ОП, "Очевидно, якби ми заздалегідь знали, що не хочемо ядерних дампів, ми могли б встановити пробну можливість належним чином або використовувати різні утиліти управління основними файлами ОС". Я намагаюся дізнатися, чи є спосіб зупинити дамп ядра, коли він вже розпочався для дуже великого завдання (заощадити час / дисковий простір / ресурси).
Майк Г.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.