Impostazione del core Linux La posizione del dump

Impostazione del core Linux La posizione del dump

Cos'è "core dump" in Linux?

Quando un processo esce inaspettatamente, spesso lascia una "discarica" ​​nel sistema. C'è un messaggio pertinente che è incluso in questo. Un core funge da strumento di debug ed è un'immagine della memoria che include anche le informazioni di debug. Se sei un utente che non vuole eseguire il debug di un programma, puoi semplicemente eliminare il core:

$ rm core

Puoi anche lasciarlo intatto, poiché il vecchio core viene sovrascritto se uno nuovo viene mai scaricato. È inoltre possibile disattivare il dumping principale con il seguente comando:

$ Ulimit -c 0

Possiamo generare i dump core su richiesta (ad esempio, tramite un debugger) o possono essere prodotti automaticamente al momento della risoluzione. Il kernel avvia le discariche di base come conseguenza dell'uscita brusca di un programma. Questi possono essere inviati a qualche altro programma (come SystemD-CoDump) per ulteriori operazioni.

Come di solito, esiste un compromesso tra la raccolta dei dati per una migliore stabilità e risoluzione dei problemi e il rischio di rivelare le informazioni sensibili dai dati di debug.

Cosa copriremo?

In questo articolo, vedremo come impostare la posizione dei dump core su Ubuntu 20.04 OS. Iniziamo ora.

Generare un dump centrale

Vediamo prima come possiamo generare una dump di base. Per questo, utilizziamo il comando Linux Kill. Innanzitutto, trova il PID di un processo e poi invia un segnale di uccisione. Ad esempio, iniziamo il processo di sonno e poi lo uccidiamo con il suo PID:

$ Sleep 500
$ kill -s sigtrap $ (pgrep sleep)

Ora che hai imparato a generare un dump di base, puoi usarlo nelle seguenti sezioni successive.

Dove vanno?

Il file di dump principale è chiamato core.PID per impostazione predefinita ed è creato nella directory di lavoro dell'applicazione. Qui, PID è l'ID del processo.

Con lo strumento Ulimit, è possibile ottenere o modificare i limiti delle risorse del sistema per la shell corrente e eventuali shell che lo accompagnano. Per verificare o configurare il limite di dimensione del file principale, utilizzare il comando seguente:

$ Ulimit -C

Al fine di evitare di delimitare o troncando il file principale, assicurarsi che il limite sia impostato a livello globale su "illimitato" [1]. Questo può essere fatto in/etc/sicurezza/limiti.Conf aggiungendo la seguente riga:

Root - Core Unlimited
* - Core Unlimited

Ora, semplicemente disconnettersi e accedere per applicare i limiti alla sessione.

Personalizzazione della posizione del dump core

Il kernel "syscctl.comando core_pattern "o il"/proc/sys/kernel/core_pattern "viene normalmente utilizzato per impostare la posizione in cui vanno i dump core.

Immettere il comando seguente per visualizzare le impostazioni per il modello principale corrente:

$ cat/proc/sys/kernel/core_pattern

Di solito, troverai il valore predefinito elencato come "core" qui.

Utilizzando "/proc/sys/kernel/core_pattern" per impostare la posizione del dump core

Reindirizzare temporaneamente i dump core in una nuova posizione, diciamo/tmp/dumps/core, usando il file “/proc/sys/kernel/core_pattern” [2] [3]. Ora, segui i seguenti passaggi:

Passo 1. Innanzitutto, crea una directory per archiviare i dump di base:

$ mkdir -p/tmp/dump/core/

Passo 2. Dare le autorizzazioni richieste a questa directory:

$ chmod a+x/tmp/dump/core/

Passaggio 3. Ora, impostare temporaneamente il percorso di dump core:

$ echo '/tmp/dump/core/core' | sudo tee/proc/sys/kernel/core_pattern

Ancora una volta, impostare a livello globale l'ulimit su illimitato.

Qui, possiamo aggiungere alcune altre informazioni al nome del file come mostrato nel seguente:

$ echo '/tmp/dump/core/core_%e.%p_%t '| sudo tee/proc/sys/kernel/core_pattern

Ogni parametro che viene utilizzato qui può essere definito come segue:

%E: per il nome del file eseguibile
%P: per ID di processo o PID.
%T: per aggiungere un timestamp

Passaggio 4. Successivamente, dobbiamo cambiare il “/etc/sysctl.File conf "per applicare permanentemente le impostazioni precedenti. Apri questo file:

$ sudo nano /etc /sysctl.conf

Ora, aggiungi la seguente riga a questo file:

kernel.core_pattern =/tmp/dump/core/core

Inoltre, invece di questa riga, puoi aggiungere questo:

kernel.core_pattern = '/tmp/dump/core/core_%e.%p_%t '

Questo è tutto ciò che dobbiamo fare. Ora, genera un dump di base come menzionato nella sezione "Generazione di un dump core". Dopo questo, possiamo verificare se il nostro file principale viene generato o no:

$ ls -l/tmp/dump/core/

Utilizzo del comando "sysctl" per impostare la posizione del dump core

Come accennato in precedenza, possiamo anche usare il comando sysctl per lo stesso scopo. Modifichiamo la posizione del dump principale e il formato del file principale:

Passo 1. Creare una nuova directory e dare le autorizzazioni richieste:

$ mkdir -p /tmp /mydumps
$ chmod a+rwx /tmp /mydumps

Passo 2. Ora, esegui il seguente comando:

$ sudo sysctl -w kernel.core_pattern =/tmp/mydumps/core_%e.%p_%t

Passaggio 3. Ora, ancora una volta, genera il dump di base come abbiamo fatto prima. Dopo questo, controlla se il file principale viene generato o meno:

$ ls -l/tmp/mydumps/

Sui sistemi Ubuntu, i dump di base vengono spesso inviati al riparo. Per i sistemi basati su Red Hat, potrebbe essere inoltrato allo strumento di reporting dei bug automatici (ABRT). Inizialmente, stavo affrontando un problema nella configurazione della posizione del dump core, quindi ho dovuto disabilitare completamente l'Apport su Ubuntu 20.04. Forse questo potrebbe essere anche il caso di Red Hat e altri.

Conclusione

In questo articolo, abbiamo visto come possiamo personalizzare la posizione dei dump core su Ubuntu 20.04 OS. I dump di base possono aiutarti a capire cosa c'è che non va, ma sono terribili per perdere dati sensibili. I dump core dovrebbero essere disabilitati ogni volta che non sono richiesti e abilitati solo quando assolutamente necessario. In tale situazione, confermare che i file sono archiviati in modo sicuro in modo che gli utenti ordinari non possano accedere ai dati. Inoltre, indipendentemente dalla tua decisione, dovresti sempre testare la configurazione per assicurarti che funzioni come previsto.

I dump core e le configurazioni predefinite sono gestiti in modo diverso da vari sistemi operativi. In tempi recenti, la maggior parte dei sistemi Linux ha adottato SystemD, il che ha portato ad alcuni aggiustamenti delle regole minori. A seconda di come è configurato il sistema, potrebbe essere necessario cercare dump core.