Linuxలో “కోర్ డంప్” అంటే ఏమిటి?
ఒక ప్రక్రియ అనుకోకుండా నిష్క్రమించినప్పుడు, అది తరచుగా మీ సిస్టమ్లో 'కోర్ డంప్'ని వదిలివేస్తుంది. దీనితో పాటు సంబంధిత సందేశం కూడా ఉంది. కోర్ డీబగ్గింగ్ టూల్గా పనిచేస్తుంది మరియు డీబగ్గింగ్ సమాచారాన్ని కలిగి ఉన్న మెమరీకి సంబంధించిన ఇమేజ్. మీరు ప్రోగ్రామ్ను డీబగ్ చేయకూడదనుకునే వినియోగదారు అయితే, మీరు కోర్ని తొలగించవచ్చు:
$ rm కోర్కొత్తది ఎప్పుడైనా డంప్ చేయబడితే పాత కోర్ తిరిగి వ్రాయబడుతుంది కాబట్టి మీరు దానిని తాకకుండా కూడా వదిలివేయవచ్చు. మీరు కింది ఆదేశంతో కోర్ డంపింగ్ను కూడా నిష్క్రియం చేయవచ్చు:
$ తగ్గుదల -సి 0
మేము డిమాండ్పై కోర్ డంప్లను రూపొందించవచ్చు (ఉదాహరణకు, డీబగ్గర్ ద్వారా) లేదా అవి స్వయంచాలకంగా రద్దు చేయబడిన తర్వాత ఉత్పత్తి చేయబడతాయి. ప్రోగ్రామ్ యొక్క ఆకస్మిక నిష్క్రమణ యొక్క పర్యవసానంగా కెర్నల్ కోర్ డంప్లను ప్రారంభిస్తుంది. అదనపు కార్యకలాపాల కోసం ఇవి కొన్ని ఇతర ప్రోగ్రామ్లకు (systemd-coredump వంటివి) పంపబడవచ్చు.
సాధారణంగా జరిగే విధంగా, మెరుగైన స్థిరత్వం మరియు ట్రబుల్షూటింగ్ కోసం డేటాను సేకరించడం మరియు డీబగ్ డేటా నుండి సున్నితమైన సమాచారాన్ని బహిర్గతం చేసే ప్రమాదం మధ్య ట్రేడ్-ఆఫ్ ఉంది.
మేము ఏమి కవర్ చేస్తాము?
ఈ వ్యాసంలో, ఉబుంటు 20.04 OSలో కోర్ డంప్ల స్థానాన్ని ఎలా సెట్ చేయాలో చూద్దాం. ఇప్పుడు ప్రారంభిద్దాం.
కోర్ డంప్ను ఉత్పత్తి చేస్తోంది
ముందుగా మనం కోర్ డంప్ను ఎలా రూపొందించవచ్చో చూద్దాం. దీని కోసం, మేము Linux కిల్ కమాండ్ని ఉపయోగిస్తాము. ముందుగా, ప్రాసెస్ యొక్క PIDని కనుగొని, ఆపై కిల్ సిగ్నల్ను పంపండి. ఉదాహరణకు, నిద్ర ప్రక్రియను ప్రారంభించి, దాని PIDతో దాన్ని చంపేద్దాం:
$ నిద్ర 500$ చంపేస్తాయి -లు SIGTRAP $ ( పట్టు నిద్ర )
ఇప్పుడు మీరు కోర్ డంప్ను ఎలా రూపొందించాలో నేర్చుకున్నారు, మీరు దానిని క్రింది తదుపరి విభాగాలలో ఉపయోగించవచ్చు.
వారు ఎక్కడికి వెళతారు?
కోర్ డంప్ ఫైల్ డిఫాల్ట్గా core.pid అని పేరు పెట్టబడింది మరియు అప్లికేషన్ యొక్క వర్కింగ్ డైరెక్టరీలో సృష్టించబడుతుంది. ఇక్కడ, పిడ్ అనేది ప్రాసెస్ ఐడి.
ulimit సాధనంతో, మీరు ప్రస్తుత షెల్ మరియు దాని తర్వాత వచ్చే ఏవైనా షెల్ల కోసం సిస్టమ్ వనరుల పరిమితులను పొందవచ్చు లేదా మార్చవచ్చు. కోర్ ఫైల్ పరిమాణ పరిమితిని ధృవీకరించడానికి లేదా కాన్ఫిగర్ చేయడానికి, కింది ఆదేశాన్ని ఉపయోగించండి:
$ తగ్గుదల -సికోర్ ఫైల్ను డీలిమిట్ చేయడం లేదా కత్తిరించడాన్ని నివారించడానికి, పరిమితి ప్రపంచవ్యాప్తంగా “అపరిమిత” [1]కి సెట్ చేయబడిందని నిర్ధారించుకోండి. కింది పంక్తిని జోడించడం ద్వారా దీన్ని /etc/security/limits.confలో చేయవచ్చు:
రూట్ - కోర్ అపరిమిత* - కోర్ అపరిమిత
ఇప్పుడు, మీ సెషన్కు వర్తించే పరిమితుల కోసం లాగ్ అవుట్ చేసి, తిరిగి లాగిన్ అవ్వండి.
కోర్ డంప్ యొక్క స్థానాన్ని అనుకూలీకరించడం
“sysctl kernel.core_pattern” కమాండ్ లేదా “/proc/sys/kernel/core_pattern” సాధారణంగా కోర్ డంప్లు వెళ్లే స్థానాన్ని సెట్ చేయడానికి ఉపయోగించబడుతుంది.
ప్రస్తుత కోర్ నమూనా కోసం సెట్టింగ్లను చూడటానికి కింది ఆదేశాన్ని నమోదు చేయండి:
$ పిల్లి / proc / sys / కెర్నల్ / కోర్_నమూనాసాధారణంగా, మీరు ఇక్కడ 'కోర్'గా జాబితా చేయబడిన డిఫాల్ట్ విలువను కనుగొంటారు.
కోర్ డంప్ స్థానాన్ని సెట్ చేయడానికి “/proc/sys/kernel/core_pattern”ని ఉపయోగించడం
'/proc/sys/kernel/core_pattern' ఫైల్ [2] [3] ఉపయోగించి, కోర్ డంప్లను తాత్కాలికంగా కొత్త స్థానానికి దారి మళ్లిద్దాం, /tmp/dumps/core అని చెప్పండి. ఇప్పుడు, క్రింది దశలను అనుసరించండి:
దశ 1 . ముందుగా, కోర్ డంప్లను నిల్వ చేయడానికి ఒక డైరెక్టరీని తయారు చేయండి:
$ mkdir -p / tmp / డంప్ / కోర్లు /దశ 2 . ఈ డైరెక్టరీకి అవసరమైన అనుమతులను ఇవ్వండి:
$ chmod a+x / tmp / డంప్ / కోర్లు /దశ 3 . ఇప్పుడు, కోర్ డంప్ పాత్ను తాత్కాలికంగా సెట్ చేయండి:
$ ప్రతిధ్వని '/tmp/dump/cores/core' | సుడో టీ / proc / sys / కెర్నల్ / కోర్_నమూనామళ్లీ, ప్రపంచవ్యాప్తంగా పరిమితిని అపరిమితంగా సెట్ చేయండి.
ఇక్కడ, కింది వాటిలో చూపిన విధంగా మనం ఫైల్ పేరుకు కొంత ఇతర సమాచారాన్ని జోడించవచ్చు:
$ ప్రతిధ్వని '/tmp/dump/cores/core_%e.%p_%t' | సుడో టీ / proc / sys / కెర్నల్ / కోర్_నమూనాఇక్కడ ఉపయోగించిన ప్రతి పరామితిని క్రింది విధంగా నిర్వచించవచ్చు:
% మరియు: కోసం అమలు చేయదగిన ఫైల్ పేరు% p: కోసం ప్రక్రియ id లేదా పిడ్.
% t: కోసం టైమ్స్టాంప్ జోడించడం
దశ 4 . తర్వాత, మునుపటి సెట్టింగ్లను శాశ్వతంగా వర్తింపజేయడానికి మనం “/etc/sysctl.conf” ఫైల్ను మార్చాలి. ఈ ఫైల్ని తెరవండి:
$ సుడో నానో / మొదలైనవి / sysctl.confఇప్పుడు, ఈ ఫైల్కి క్రింది పంక్తిని జోడించండి:
kernel.core_pattern = / tmp / డంప్ / కోర్లు / కోర్అలాగే, ఈ లైన్కు బదులుగా, మీరు దీన్ని జోడించవచ్చు:
kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'మనం చేయాల్సిందల్లా అంతే. ఇప్పుడు, “కోర్ డంప్ని ఉత్పత్తి చేయడం” విభాగంలో పేర్కొన్న విధంగా కోర్ డంప్ను రూపొందించండి. దీని తర్వాత, మన కోర్ ఫైల్ రూపొందించబడిందో లేదో తనిఖీ చేయవచ్చు:
$ ls -ఎల్ / tmp / డంప్ / కోర్లు /
కోర్ డంప్ స్థానాన్ని సెట్ చేయడానికి “Sysctl” కమాండ్ని ఉపయోగించడం
ఇంతకు ముందు చెప్పినట్లుగా, మనం అదే ప్రయోజనం కోసం sysctl ఆదేశాన్ని కూడా ఉపయోగించవచ్చు. కోర్ డంప్ స్థానాన్ని మరియు కోర్ ఫైల్ ఆకృతిని మారుద్దాం:
దశ 1 . కొత్త డైరెక్టరీని సృష్టించండి మరియు అవసరమైన అనుమతులను ఇవ్వండి:
$ mkdir -p / tmp / మైడంప్స్$ chmod a+rwx / tmp / మైడంప్స్
దశ 2 . ఇప్పుడు, కింది ఆదేశాన్ని అమలు చేయండి:
$ సుడో sysctl -లో kernel.core_pattern= / tmp / మైడంప్స్ / కోర్_ % మరియు. % p_ % t
దశ 3 . ఇప్పుడు, మళ్ళీ, మేము ఇంతకు ముందు చేసినట్లుగా కోర్ డంప్ను రూపొందించండి. దీని తర్వాత, కోర్ ఫైల్ రూపొందించబడిందో లేదో తనిఖీ చేయండి:
$ ls -ఎల్ / tmp / మైడంప్స్ /
ఉబుంటు సిస్టమ్లలో, కోర్ డంప్లు తరచుగా Apportకి పంపబడతాయి. Red Hat-ఆధారిత సిస్టమ్ల కోసం, ఇది ఆటోమేటిక్ బగ్ రిపోర్టింగ్ టూల్ (ABRT)కి ఫార్వార్డ్ చేయబడవచ్చు. ప్రారంభంలో, కోర్ డంప్ లొకేషన్ను కాన్ఫిగర్ చేయడంలో నేను సమస్యను ఎదుర్కొంటున్నాను, కాబట్టి నేను ఉబుంటు 20.04లో యాప్ను పూర్తిగా డిసేబుల్ చేయాల్సి వచ్చింది. బహుశా, ఇది Red Hat మరియు ఇతరుల విషయంలో కూడా కావచ్చు.
ముగింపు
ఈ వ్యాసంలో, ఉబుంటు 20.04 OSలో కోర్ డంప్ల స్థానాన్ని ఎలా అనుకూలీకరించవచ్చో మేము చూశాము. కోర్ డంప్లు తప్పు ఏమిటో గుర్తించడంలో మీకు సహాయపడతాయి, అయితే అవి సున్నితమైన డేటాను లీక్ చేయడంలో భయంకరమైనవి. కోర్ డంప్లు అవసరం లేనప్పుడు వాటిని నిలిపివేయాలి మరియు ఖచ్చితంగా అవసరమైనప్పుడు మాత్రమే ప్రారంభించబడతాయి. అటువంటి పరిస్థితిలో, ఫైల్లు సురక్షితంగా నిల్వ చేయబడిందని నిర్ధారించండి, తద్వారా సాధారణ వినియోగదారులు డేటాను యాక్సెస్ చేయలేరు. ఇంకా, మీ నిర్ణయంతో సంబంధం లేకుండా, మీరు ఎల్లప్పుడూ మీ కాన్ఫిగరేషన్ను పరీక్షించి, అది ఉద్దేశించిన విధంగా పనిచేస్తుందని నిర్ధారించుకోవాలి.
కోర్ డంప్లు మరియు డిఫాల్ట్ కాన్ఫిగరేషన్లు వివిధ ఆపరేటింగ్ సిస్టమ్ల ద్వారా విభిన్నంగా నిర్వహించబడతాయి. ఇటీవలి కాలంలో, చాలా Linux సిస్టమ్లు systemdని అవలంబిస్తున్నాయి, ఇది కొన్ని చిన్న నియమాల సర్దుబాట్లను తీసుకువచ్చింది. మీ సిస్టమ్ ఎలా కాన్ఫిగర్ చేయబడిందనే దానిపై ఆధారపడి, మీరు కోర్ డంప్ల కోసం వెతకవలసి ఉంటుంది.