Я шукаю спосіб взяти ненав'язливу кореневу систему запущеного процесу в Linux.
Я знайомий з gdb gcore, але це може бути запущено лише тоді, коли gdbвін додається до процесу, і він зупинений для налагодження. Для великого дампу ядра, який може означати багато секунд, а то й декілька хвилин, перерваного виконання.
Чи є альтернатива, що не блокує?
Linux підтримує пам'ять копіювання при записі, на яку вона покладається fork()без підтримки exec(). Тому я думаю про щось на рівні ядра, де ядро робить знімок під час копіювання таблиць сторінок процесу процесу, який скидається, а потім записує ядро, поки початковий процес продовжує працювати.
Я впевнений, що я міг би використати gdbдля того, щоб примусити fork()дитину потім скинути дитину, поки батько веде себе щасливо, а потім wait()у батька, щоб пожинати дитину після закінчення. Це безладно, але все ж вимагає двох перерв батьківського процесу, хоч і коротких.
Напевно, комусь це було потрібно раніше?