GNU/Linux >> Tutoriales Linux >  >> Linux

directorio de volcado del núcleo configurable por proceso

No, no puede establecerlo por proceso. El archivo principal se vuelca en el directorio de trabajo actual del proceso o en el directorio establecido en /proc/sys/kernel/core_pattern si el patrón incluye un directorio.

CoreDumpDirectory en apache es un truco, apache registra controladores de señal para todas las señales que provocan un volcado de núcleo y cambia el directorio actual en su controlador de señal.

/* handle all varieties of core dumping signals */
static void sig_coredump(int sig)
{
    apr_filepath_set(ap_coredump_dir, pconf);
    apr_signal(sig, SIG_DFL);
#if AP_ENABLE_EXCEPTION_HOOK
    run_fatal_exception_hook(sig);
#endif
    /* linuxthreads issue calling getpid() here:
     *   This comparison won't match if the crashing thread is
     *   some module's thread that runs in the parent process.
     *   The fallout, which is limited to linuxthreads:
     *   The special log message won't be written when such a
     *   thread in the parent causes the parent to crash.
     */
    if (getpid() == parent_pid) {
        ap_log_error(APLOG_MARK, APLOG_NOTICE,
                     0, ap_server_conf,
                     "seg fault or similar nasty error detected "
                     "in the parent process");
        /* XXX we can probably add some rudimentary cleanup code here,
         * like getting rid of the pid file.  If any additional bad stuff
         * happens, we are protected from recursive errors taking down the
         * system since this function is no longer the signal handler   GLA
         */
    }
    kill(getpid(), sig);
    /* At this point we've got sig blocked, because we're still inside
     * the signal handler.  When we leave the signal handler it will
     * be unblocked, and we'll take the signal... and coredump or whatever
     * is appropriate for this particular Unix.  In addition the parent
     * will see the real signal we received -- whereas if we called
     * abort() here, the parent would only see SIGABRT.
     */
}

Linux
  1. UNIX/Linux:3 Maneras de Enviar Señal a Procesos

  2. Fundamentos de señales de Linux - Parte I

  3. ¿Número máximo de subprocesos por proceso en Linux?

  4. Cómo provocar mediante programación un volcado del núcleo en C/C++

  5. ¿Cómo configuro el directorio de trabajo del proceso principal?

Encuentre el directorio de trabajo actual de un proceso usando Pwdx en Linux

¿Qué es un proceso detenido en Linux?

¿Cómo saber el número de núcleos de un sistema en Linux?

volcado octal del directorio

¿Cómo comprobar la utilización de E/S de disco por proceso?

Volcar la memoria de un proceso de Linux en un archivo