תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

כיצד תשתמש בלינוקס למציאת הקבצים שממלאים לך את השרת?

מחבר:
בתאריך:

נתקלתי בבעיה הזו אצל לקוחות וגם באתרים שלי שאחרי כמה חודשים מקום האחסון מתמלא בלי הסבר.

כדי למצוא את הקבצים והתיקיות הגדולים הגורמים לבעיה אני מריץ כמה פקודות בטרמינל:

כיצד למצוא את הקבצים והתיקיות הגדולים ביותר על שרת לינוקס

  1. נכנס לתיקיית השורש ונבדוק איזה תיקיות משתמשות בחלק הרב ביותר של שטח האחסון:

    $ df -hT
    • df פקודה להצגת שטח האחסון
    • האופציה -h להצגה בפורמט נוח לקריאה.
    • האופציה -T להצגת הסוג type

     

    אפשר לבחור להסתיר חלק מהתוצאות. לדוגמה, ניתן להסתיר את התוצאות שהם tmpfs:

    $ df -hT -x tmpfs
    • האופציה -x על פי exclude מיועדת להסתרה של תוצאות.
  2. עדיין בתיקיית השורש של האתר נבדוק את מידת השימוש במערכת הקבצים:

    $ du -h --max-depth=1 2> /dev/null | sort -hr | head
    • du -h היא פקודה לבדיקת הרכב האחסון על מערכת הפעלה לינוקס. האופציה h בשביל הצגת משקל הקבצים בפורמט קריא. לדוגמה: 4K, 8M.

      max-depth=1 כדי להגדיר לפקודה את עומק התיקיות אליו צריך לרדת. רושמים 1 כדי שהפקודה לא תכנס לתיקיות המשנה.

      הפנייה ל-dev/null/ כדי למנוע התראות על גישה לתיקיות שאין אליהם הרשאות מתאימות.

    • צריך להעביר את הפלט של תוכנה אחת לתוכנה שנייה ואת זה עושים באמצעות פייפים.

    • נתעל את פלט הפקודה לפקודה הבאה בשרשרת הפקודות: sort -hr בשביל לסדר את התיקיות על פי משקלם עם הכבדה ביותר בראש הרשימה.

    • head בשביל להציג את 10 התיקיות הכבדות ביותר, ולא מעבר.

  3. אחרי שאתרתי תיקייה שנראית לי מנופחת במיוחד אני נכנס אליה ומריץ שוב את הפקודה לעיל לאיתור 10 התיקיות הגדולות ביותר:

    $ du -h --max-depth=1 2> /dev/null | sort -hr | head

    אני מריץ, בנוסף, פקודה לאיתור 10 הקבצים הגדולים ביותר:

    $ ls -Slh | head -n 10
    • -S בשביל מיון לפי משקל הקובץ.
    • -l בשביל פורמט הצגה מפורט.
    • -h הצגת המשקלים באופן קריא. לדוגמה: 8M או 400K.
    • מתעלים לפקודה נוספת head -n 10 כולל מספר התוצאות שיש להציג.

   

ניקוי קובץ גדול מתוכנו

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

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

הפקודה לניקוי הקובץ מתוכנו:

$ truncate -s 0 <file_name>
  • הפקודה גורמת לגודל הקובץ להתכווץ ל-0 בייטים תוך שהיא מעבירה את הסמן pointer לתחילת הקובץ.

 

מחיקת תיקיות

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

כדי למחוק את התיקיות והקבצים בני יותר מ-60 יום מתוך התיקייה בתוכה אנו נמצאים נשתמש בפקודה שתיכף נראה אבל לפני שאציג אותה צריך לברר מה עומדים למחוק. בשביל לברר מה הקבצים הישנים והתיקיות הריקות שעלולים למחוק יש להריץ את הפקודה הבאה:

$ find . -type f -mtime +60 -exec echo {} +
$ find . -type d -empty -mtime +60 -exec echo {} +

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

$ find . -type f -mtime +60 -exec rm -f {} +
$ find . -type d -empty -exec rmdir {} +
  • הארגומנט הראשון הוא התיקייה בתוכה רוצים לעבוד. הנקודה בגלל שרוצים לעבוד על כל מה שבתוך התיקייה.
  • הארגומנט -type f מציין שרוצים לעבוד על קבצים. אם מעוניינים למחוק תיקיות הארגומנט צריך להיות -type d.
  • הארגומנט -mtime מציין כמה ימים אחורנית. במקרה זה, 60 יום.
  • הארגומנט -exec מאפשר לשרשר פקודות, דוגמת rm בשביל המחיקה. לפקודת המחיקה העברנו את הפרמטר -f {} + בשביל קבצים או rmdir {} + בשביל תיקיות.

    

אולי גם זה יעניין אותך:

לינוקס - צינורות והפניות

מערכת הקבצים של Linux - מה שרצית לדעת ולא העזת לשאול

ניהול הרשאות, משתמשים וקבוצות בלינוקס

5 פילטרים של לינוקס שחובה להכיר

   

לכל המדריכים בסדרת הלינוקס

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?