הגדרת Linux Core the Dump Location

Hgdrt Linux Core The Dump Location



מה זה 'Core Dump' בלינוקס?

כאשר תהליך יוצא באופן בלתי צפוי, הוא משאיר לעתים קרובות מאחורי 'מזבלה ליבה' במערכת שלך. יש הודעה רלוונטית שנכללת בזה. ליבה משמשת ככלי איתור באגים והיא תמונה של זיכרון הכוללת גם את מידע איתור הבאגים. אם אתה משתמש שלא רוצה לנפות באגים בתוכנית, אתה יכול פשוט למחוק את הליבה:

$ rm הליבה

אתה יכול גם להשאיר אותו ללא נגיעה, שכן הליבה הישנה נמחקת אם אחת חדשה נזרקת אי פעם. אתה יכול גם לבטל את השלכת הליבה עם הפקודה הבאה:







$ לְהַקְטִין 0

אנחנו יכולים ליצור את הליבה dumps לפי דרישה (לדוגמה, דרך באגים) או שהם יכולים להיות מיוצרים אוטומטית עם סיום. הקרנל יוזם השלכות ליבה כתוצאה מיציאה פתאומית של תוכנית. אלה עשויים להישלח לתוכנית אחרת (כגון systemd-coredump) לצורך פעולות נוספות.



כפי שקורה בדרך כלל, קיים פשרה בין איסוף הנתונים ליציבות ופתרון תקלות טובים יותר לבין הסיכון לחשיפת המידע הרגיש מנתוני ניפוי באגים.



מה נכסה?

במאמר זה נראה כיצד להגדיר את המיקום של dump הליבה ב-Ubuntu 20.04 OS. בואו נתחיל עכשיו.





יצירת Core Dump

תחילה נראה כיצד נוכל ליצור מזבלה ליבה. לשם כך, אנו משתמשים בפקודת Linux kill. ראשית, מצא את ה-PID של תהליך ולאחר מכן שלח אות הרג. לדוגמה, בואו נתחיל את תהליך השינה ואז נהרוג אותו עם ה-PID שלו:

$ לִישׁוֹן 500

$ לַהֲרוֹג SIGTRAP $ ( אחיזה לִישׁוֹן )



כעת, לאחר שלמדת כיצד ליצור dump הליבה, תוכל להשתמש בה בסעיפים הבאים.

לאן הם הולכים?

קובץ dump הליבה נקרא core.pid כברירת מחדל והוא נוצר בספריית העבודה של היישום. כאן, pid הוא מזהה התהליך.

עם הכלי ulimit, אתה יכול לקבל או לשנות את מגבלות משאבי המערכת עבור המעטפת הנוכחית וכל קונכייה שמגיעה אחריה. כדי לאמת או להגדיר את מגבלת גודל קובץ הליבה, השתמש בפקודה הבאה:

$ לְהַקְטִין

על מנת למנוע תיחום או קיצוץ של קובץ הליבה, ודא שהמגבלה מוגדרת באופן גלובלי ל'בלתי מוגבל' [1]. ניתן לעשות זאת ב- /etc/security/limits.conf על ידי הוספת השורה הבאה:

שורש - ליבה ללא הגבלה

* - ליבה בלתי מוגבלת

כעת, פשוט התנתק והתחבר שוב כדי שהמגבלות יחולו על ההפעלה שלך.

התאמה אישית של המיקום של מזבלה הליבה

הפקודה 'sysctl kernel.core_pattern' או הפקודה '/proc/sys/kernel/core_pattern' משמשת בדרך כלל כדי להגדיר את המיקום שאליו עוברות dump הליבה.

הזן את הפקודה הבאה כדי לראות את ההגדרות עבור תבנית הליבה הנוכחית:

$ חתול / פרוק / sys / גַרעִין / core_pattern

בדרך כלל, תמצא את ערך ברירת המחדל רשום כ'ליבה' כאן.

שימוש ב-'/proc/sys/kernel/core_pattern' כדי להגדיר את מיקום dump הליבה

הבה ננתב באופן זמני את dump הליבה למיקום חדש, נגיד /tmp/dumps/core, באמצעות הקובץ '/proc/sys/kernel/core_pattern' [2] [3]. כעת, בצע את השלבים הבאים:

שלב 1 . ראשית, צור ספרייה כדי לאחסן את dump הליבה:

$ mkdir -עמ' / tmp / מזבלה / ליבות /

שלב 2 . תן את ההרשאות הנדרשות לספרייה הזו:

$ chmod a+x / tmp / מזבלה / ליבות /

שלב 3 . כעת, הגדר באופן זמני את נתיב השלכת הליבה:

$ הֵד '/tmp/dump/cores/core' | סודו טי / פרוק / sys / גַרעִין / תבנית_ליבה

שוב, הגדירו את ה-ulimit באופן גלובלי לבלתי מוגבל.

כאן, נוכל לצרף מידע נוסף לשם הקובץ כפי שמוצג להלן:

$ הֵד '/tmp/dump/cores/core_%e.%p_%t' | סודו טי / פרוק / sys / גַרעִין / תבנית_ליבה

ניתן להגדיר כל פרמטר המשמש כאן באופן הבא:

% ו: ל בר הפעלה קוֹבֶץ שֵׁם

% p: ל תהליך תְעוּדַת זֶהוּת או פיד.

% t: ל הוספת חותמת זמן

שלב 4 . לאחר מכן, עלינו לשנות את הקובץ '/etc/sysctl.conf' כדי להחיל לצמיתות את ההגדרות הקודמות. פתח את הקובץ הזה:

$ סודו ננו / וכו / sysctl.conf

כעת, הוסף את השורה הבאה לקובץ זה:

kernel.core_pattern = / tmp / מזבלה / ליבות / הליבה

כמו כן, במקום שורה זו, אתה יכול להוסיף את זה:

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

זה כל מה שאנחנו צריכים לעשות. כעת, צור dump core כפי שהוזכר בסעיף 'יצירת dump Core'. לאחר מכן, נוכל לבדוק אם קובץ הליבה שלנו נוצר או לא:

$ ls / tmp / מזבלה / ליבות /

שימוש בפקודה 'Sysctl' כדי להגדיר מיקום Core Dump

כפי שהוזכר קודם לכן, אנו יכולים להשתמש גם בפקודה sysctl לאותה מטרה. בואו נשנה את מיקום dump הליבה ואת הפורמט של קובץ הליבה:

שלב 1 . צור ספרייה חדשה ותן את ההרשאות הנדרשות:

$ mkdir -עמ' / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

שלב 2 . כעת, פשוט הפעל את הפקודה הבאה:

$ סודו sysctl kernel.core_pattern= / tmp / mydumps / הליבה_ % ו. % p_ % ט

שלב 3 . כעת, שוב, צור את dump הליבה כפי שעשינו קודם לכן. לאחר מכן, בדוק אם קובץ הליבה נוצר או לא:

$ ls / tmp / mydumps /

במערכות אובונטו, מזימות הליבה נשלחות לעתים קרובות ל-Apport. עבור מערכות מבוססות Red Hat, זה עשוי להיות מועבר לכלי דיווח באגים אוטומטי (ABRT). בתחילה, נתקלתי בבעיה בהגדרת מיקום ה-dump הליבה, אז נאלצתי להשבית לחלוטין את Apport ב-Ubuntu 20.04. אולי, זה עשוי להיות המקרה גם עם רד האט ואחרים.

סיכום

במאמר זה, ראינו כיצד אנו יכולים להתאים אישית את המיקום של dump הליבה ב-Ubuntu 20.04 OS. השלכות ליבה יכולות לעזור לך להבין מה לא בסדר, אבל הן נוראיות לדליפת נתונים רגישים. יש להשבית את dump הליבה בכל פעם שהם לא נדרשים ולהפעיל רק כאשר יש צורך מוחלט. במצב כזה, אשר שהקבצים מאוחסנים בצורה מאובטחת כך שהמשתמשים הרגילים לא יכולים לגשת לנתונים. יתר על כן, ללא קשר להחלטה שלך, עליך תמיד לבדוק את התצורה שלך כדי לוודא שהיא פועלת כמתוכנן.

השלכות ליבה ותצורות ברירת המחדל מטופלות באופן שונה על ידי מערכות הפעלה שונות. בתקופה האחרונה, רוב מערכות הלינוקס אימצו systemd, מה שהביא כמה התאמות כללים קלים. בהתאם לאופן שבו המערכת שלך מוגדרת, ייתכן שיהיה עליך לחפש dump cores.