Impostazione di Linux Core la posizione del dump

Impostazione Di Linux Core La Posizione Del Dump



Cos'è 'Core Dump' in Linux?

Quando un processo termina inaspettatamente, spesso lascia un 'core dump' 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 nucleo

Puoi anche lasciarlo intatto, poiché il vecchio core viene sovrascritto se ne viene scaricato uno nuovo. Puoi anche disattivare il core dumping con il seguente comando:







$ diminuire -c 0

Possiamo generare i core dump su richiesta (ad esempio, tramite un debugger) oppure possono essere prodotti automaticamente al termine. Il kernel avvia i core dump come conseguenza dell'uscita improvvisa di un programma. Questi possono essere inviati a qualche altro programma (come systemd-coredump) per operazioni aggiuntive.



Come di solito accade, c'è 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.



Di cosa parleremo?

In questo articolo vedremo come impostare la posizione dei core dump sul sistema operativo Ubuntu 20.04. Cominciamo ora.





Generazione di un core dump

Vediamo prima come possiamo generare un core dump. Per questo, usiamo il comando kill di Linux. Per prima cosa, trova il PID di un processo e poi invia un segnale kill. Ad esempio, avviamo il processo sleep e poi uccidiamolo con il suo PID:

$ dormire 500

$ uccisione -S SIGTRAP $ ( presa dormire )



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

Dove vanno?

Il file core dump è denominato core.pid per impostazione predefinita e viene creato nella directory di lavoro dell'applicazione. Qui, pid è l'id del processo.

Con lo strumento ulimit, puoi ottenere o modificare i limiti delle risorse di sistema per la shell corrente e tutte le shell successive. Per verificare o configurare il limite della dimensione del file principale, utilizzare il seguente comando:

$ diminuire -c

Per evitare di delimitare o troncare il file principale, assicurarsi che il limite sia globalmente impostato su 'illimitato' [1]. Questo può essere fatto in /etc/security/limits.conf aggiungendo la seguente riga:

root - nucleo illimitato

* - nucleo illimitato

Ora è sufficiente disconnettersi e riconnettersi per applicare i limiti alla sessione.

Personalizzazione della posizione del core dump

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

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

$ gatto / proc / sys / nocciolo / schema_core

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

Utilizzo di '/proc/sys/kernel/core_pattern' per impostare la posizione del core dump

Reindirizziamo temporaneamente i core dump in una nuova posizione, ad esempio /tmp/dumps/core, utilizzando il file '/proc/sys/kernel/core_pattern' [2] [3]. Ora, segui i seguenti passaggi:

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

$ mkdir -p / tmp / scarico / core /

Passo 2 . Concedi le autorizzazioni richieste a questa directory:

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

Passaggio 3 . Ora, imposta temporaneamente il percorso del core dump:

$ eco '/tmp/dump/core/core' | sudo tee / proc / sys / nocciolo / schema_core

Ancora una volta, imposta globalmente ulimit su illimitato.

Qui, possiamo aggiungere alcune altre informazioni al nome del file come mostrato di seguito:

$ eco '/tmp/dump/core/core_%e.%p_%t' | sudo tee / proc / sys / nocciolo / schema_core

Ogni parametro utilizzato qui può essere definito come segue:

% e: per eseguibile file nome

% p: per processi id o pid.

% t: per aggiungendo un timestamp

Passaggio 4 . Successivamente, dobbiamo modificare il file '/etc/sysctl.conf' per applicare in modo permanente le impostazioni precedenti. Apri questo file:

$ sudo nano / eccetera / sysctl.conf

Ora, aggiungi la seguente riga a questo file:

kernel.core_pattern = / tmp / scarico / core / nucleo

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 core dump come indicato nella sezione 'Generazione di un core dump'. Successivamente, possiamo verificare se il nostro file principale è generato o meno:

$ ls -l / tmp / scarico / core /

Utilizzo del comando 'Sysctl' per impostare la posizione del core dump

Come accennato in precedenza, possiamo anche utilizzare il comando sysctl per lo stesso scopo. Cambiamo la posizione del core dump e il formato del file core:

Passo 1 . Crea una nuova directory e fornisci le autorizzazioni richieste:

$ mkdir -p / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Passo 2 . Ora, basta eseguire il seguente comando:

$ sudo sysctl -in kernel.core_pattern= / tmp / mydumps / nucleo_ % e. % p_ % t

Passaggio 3 . Ora, di nuovo, genera il core dump come abbiamo fatto in precedenza. Successivamente, controlla se il file principale è stato generato o meno:

$ ls -l / tmp / mydumps /

Sui sistemi Ubuntu, i core dump vengono spesso inviati ad Apport. Per i sistemi basati su Red Hat, potrebbe essere inoltrato all'ABRT (Automatic Bug Reporting Tool). Inizialmente, stavo affrontando un problema nella configurazione della posizione del core dump, quindi ho dovuto disabilitare completamente Apport su Ubuntu 20.04. Forse, questo potrebbe anche essere il caso di Red Hat e altri.

Conclusione

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

I core dump e le configurazioni predefinite vengono gestiti in modo diverso dai vari sistemi operativi. In tempi recenti, la maggior parte dei sistemi Linux ha adottato systemd, il che ha comportato alcuni piccoli aggiustamenti alle regole. A seconda di come è configurato il sistema, potrebbe essere necessario cercare core dump.