Provided by:
manpages-pl_20060617-1_all 
NAZWA
core - plik zrzutu pamięci
OPIS
Dla pewnych sygnałów domyślną akcją procesu jest zakończenie działania
i utworzenie pliku zrzutu pamięci (core), czyli pliku zawierającego
obraz pamięci procesu w czasie, gdy został on zakończony. Listę
sygnałów powodujących utworzenie pliku core przez proces można znaleźć
w signal(7).
Proces może ustawić miękki limit zasobów RLIMIT_CORE, aby ograniczyć
maksymalny rozmiar pliku, który zostanie utworzony po otrzymaniu
sygnału powodującego zrzut pamięci; szczegółowe informacje można
znaleźć w getrlimit(2).
W następujących wypadkach plik zrzutu pamięci nie będzie utworzony:
* Proces nie ma uprawnień, aby zapisać plik zrzutu pamięci
(Domyślnie plik ten nazywa się core i jest tworzony w bieżącym
katalogu roboczym procesu. Nazwę tę można zmienić - patrz
niżej). Zapisywanie pliku zrzutu nie powiedzie się również
wtedy, gdy prawa katalogu, w którym ten plik miałby być
utworzony, nie pozwalajÄ… na zapis do niego lub gdy plik o tej
samej nazwie istnieje i nie jest zapisywalny lub nie jest
zwykłym plikiem (ale np. katalogiem lub dowiązaniem
symbolicznym).
* Nie istnieje katalog, w którym miałby być utworzony plik zrzutu
pamięci.
* Limity zasobów RLIMIT_CORE lub RLIMIT_FSIZE dla procesu są
ustawione na zero (patrz getrlimit(2)).
* Nie sÄ… ustawione uprawnienia do odczytu pliku binarnego
uruchomionego przez proces.
* Proces uruchomił program z flagą set-user-ID (set-group-ID),
którego właścicielem jest użytkownik (grupa) inny niż
rzeczywisty użytkownik (grupa) procesu. (Jednakże patrz w
prctl(2) opis operacji PR_SET_DUMPABLE oraz w proc(5) opis pliku
/proc/sys/fs/suid_dumpable).
Nazwy plików zrzutu pamięci
Domyślnie plik zrzutu pamięci nazywa się core, jednakże w pliku
</proc/sys/kernel/core_pattern> (wprowadzonym w Linuksie 2.5) można
zdefiniować szablon, który będzie użyty do nazywania plików zrzutu
pamięci. Szablon ten może zawierać specjalne znaczniki zaczynające się
od %, które podczas tworzenia pliku zrzutu będą zastąpione
następującymi wartościami:
%% pojedynczy znak %
%p PID procesu zrzucającego pamięć
%u rzeczywisty UID tego procesu
%g rzeczywisty GID tego procesu
%s numer sygnału wywołującego zrzut pamięci
%t czas zrzutu (sekundy od północy 1 stycznia 1970)
%h nazwa komputera (to samo co 'nodename'
zwracane przez uname(2))
%e nazwa pliku wykonywalnego
Jeśli szablon kończy się pojedynczym znakiem %, to znak ten zostanie
usunięty z nazwy pliku zrzutu. Podobnie zostaną usunięte wszelkie inne
kombinacje % i znaku niż te, wymienione powyżej. Wszystkie inne znaki
szablonu staną się częścią nazwy pliku zrzutu. Maksymalna długość
wygenerowanej nazwy pliku wynosi 64 bajty. Domyślną wartością jest
"core". W celu zachowania wstecznej zgodności, jeśli
/proc/sys/kernel/core_pattern nie zawiera "%p", a
/proc/sys/kernel/core_uses_pid (patrz niżej) ma niezerową wartość, to
.PID będzie dołączony do nazwy pliku zrzutu.
Linux 2.4 zamiast pliku /proc/sys/kernel/core_pattern dostarczał
bardziej prymitywną metodę kontrolowania nazwy pliku zrzutu pamięci.
Gdy plik /proc/sys/kernel/core_uses_pid zawiera wartość 0, plik zrzutu
pamięci ma po prostu nazwę core. Gdy plik ten zawiera wartość
niezerową, plik zrzutu pamięci będzie zawierał w swojej nazwie ID
procesu, w postaci core.PID.
UWAGI
Aby uzyskać zrzut pamięci działającego procesu, można użyć polecenia
gcore programu gdb(1).
Jeżeli pamięć zrzuca proces wielowątkowy (albo - bardziej precyzyjnie -
proces, który dzieli swą pamięć z innym procesem utworzonym z flagą
CLONE_VM funkcji clone(2)), to ID procesu zawsze będzie dołączone do
nazwy pliku zrzutu, chyba że owo ID procesu już występuje w nazwie
pliku, ponieważ w pliku /proc/sys/kernel/core_pattern użyto
specyfikatora %p.
ZOBACZ TAKŻE
gdb(1), getrlimit(2), prctl(2), sigaction(2), elf(5), proc(5),
signal(7)