NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
HE

פקודות לינוקס ומיומנויות מעטפת

grep: חיפוש בלינוקס כמו מקצוען

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

נקודות עיקריות

  • חיפוש רקורסיבי במטרה: grep -rni 'fail2ban' /var/log --include='*.log' מדלג על קבצים בינאריים וארכיונים דחוסים בעצמו; grep -r חשוף מעל /var/log מלמד את השיעור הזה בדרך האיטית.
  • ההקשר הופך התאמות לקריאה: -A 3 מציג שורות אחרי, -B 3 לפני, -C 5 שניהם; -l מפרט רק שמות קבצים, -c סופר התאמות לכל קובץ, ו-L הופך את הרשימה למה שחסר.
  • קודי יציאה הם חלק מהחוזה: 0 פירושו התאמה, 1 פירושו ללא התאמה, 2 פירושו שגיאה; סקריפט שמריץ את grep -q ומתעלם שההבחנה הזו מתייחסת להצלחה ולשקט באופן זהה.
  • רשימות קבצי שרשרת null-safely: grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; שחרר את הזיווג Z ו-0 ושם הקובץ הראשון עם רווח שובר את הצינור.
  • השתמש ב-E כרמת ברירת המחדל של ה-Regex עבור החלפה ניתנת לקריאה, והגע ל-P (מבט, מחלקות \d) רק כאשר אתה מקבל שזו הרחבה של GNU BSD grep לא ישא.
  • -F מתייחסת לתבנית כאל טקסט מילולי: מהיר יותר וחסין בפני מטא-תווים של ביטויים הרגולריים המתגנבים ממשתנים שהודבקו ישירות מתוך כרטיס.
  • --exclude-dir=.git ו--exclude-dir=node_modules שומרים על חיפושים רקורסיביים מתוך ספריות שקיימות רק כדי להאט אותם; לאיית שמות באופן מפורש בסקריפטים מכיוון שהרחבת הסד היא נוחות bash, לא תכונת grep.
  • שמור על הפרדה בין ההרגלים: --color=auto לנוחות אינטראקטיבית, ללא צבע בסקריפטים (רצפי בריחה פגומים ביומנים), ו-n (מספרי שורות) על כך שהאדם הבא יוכל למצוא את המקום שהדבקת.

הערת שטח

פעם הרצתי grep -r חשוף על פני כל חוות היומן של לקוח ב-2 לפנות בוקר וקיבלתי ארבעים דקות של שקט על הצרות שלי; הוספת --include='*.log' ו-l סיימו את הכרטיס במקום. הרגלי קוד הכלול והיציאה נכנסים כעת לפני שהתבנית עושה זאת.

שאלות נפוצות

מדוע grep מדפיס לפעמים 'התאמות קבצים בינאריים' במקום השורה שלי?

בית NUL ליד ההתאמה גורם ל-GNU grep להתייחס לקובץ כבינארי; הוסף -a כדי לאלץ מצב טקסט או -I לדלג לחלוטין על קבצים בינאריים, שהיא ברירת המחדל הנכונה בספריות יומנים מעורבות.

האם עלי להשתמש ב-ripgrep במקום זאת?

ripgrep מהיר יותר ומדלג על קבצים בינאריים ומוסתרים כברירת מחדל, אבל grep קיים בכל תיבה שאי פעם תכנס ל-SSH, כולל תמונות הצלה. למד תחילה grep; להגיע ל-rg שבו הוא מותקן במקרה.

כיצד אוכל לחפש יומנים סובבים ודחוסים?

zgrep מחפש בשקיפות קבצי .gz ו-zstdgrep מכסה את סיבוב המדחסים החדשים יותר שעברו; המחט של אתמול חיה בדרך כלל בתוך אחד מאלה, כך שהכלים נחשבים כהיגיינה בסיסית.

כיצד אוכל להתאים מילה אך לא למילה ארוכה יותר המכילה אותה?

השתמש ב-w עבור התאמת מילה שלמה וב-x עבור התאמות שורה מלאה; כאשר דפוסים זקוקים לחלקי מילים, מחלקות תווים כמו [Ss]erver נותנות שליטה מדויקת מבלי לשטח את האותיות בכל מקום אחר.

איך Kinetikatech מסייעת לך ב-פקודות לינוקס ומיומנויות מעטפת

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

דבר עם מהנדס

צריך עזרה בניהול שרתים?

צוות המומחים שלנו זמין 24/7 - זמן תגובה 30 דקות.

קבל עזרה support@kinetikatech.com