במדריך המקיף הזה תלמדו את יסודות מערכת לינוקס, החל מפקודות חיוניות כמו
grep, ps,
ו-top, דרך ניהול תהליכים עם
kill ועד עיבוד נתונים חכם בעזרת
awk.
נסקור שיטות לאיתור תהליכים זוללי זיכרון,
נלמד לקרוא לוגים בזמן אמת ולכתוב סקריפטים יעילים שמקנים שליטה מלאה בשרת.
בנוסף, נכיר קונספטים מתקדמים של מודולי ליבה, חומת אש ושכבות הגנה כדוגמת
SELinux ו-AppArmor,
כדי להבטיח אבטחה רב-שכבתית.
כל נושא מלווה בדוגמאות אמיתיות, כך שתוכלו
לתרגל מיד ולהתכונן היטב למיוני גאמא סייבר.
לינוקס היא מערכת הפעלה ותיקה ובעלת גמישות גבוהה במיוחד.
אחת מהסיבות המרכזיות לפופולריות שלה היא אוסף הפקודות והכלים העוצמתיים המובנים במערכת.
עבודה נכונה עם פקודות כמו grep, ps,
top, kill ו-awk מאפשרת ניהול ושליטה מעמיקה על המערכת, החל מסינון טקסטים, דרך ניטור תהליכים ועד עיבוד מתוחכם של נתונים.
מערכת לינוקס נמצאת בשימוש רחב גם בחברות אבטחת מידע.
פקודת grep היא אחת מהפקודות הנפוצות ביותר בתחום סינון טקסט.
היא מבצעת חיפוש של מחרוזות (patterns) בקבצים או בפלט של פקודות אחרות.
ניתן להשתמש בה יחד עם צינורות (pipes) כדי לסנן את התוצאות לפני שמעבירים אותן לעיבוד נוסף.
פקודת grep -v מציגה רק את השורות שאינן מכילות את הטקסט המחופש.
אם מחפשים להציג הקשר מסביב לשורות, האופציות -A ו--B משמשות להצגת מספר שורות לפני (-B) או אחרי (-A) ההתאמה.
לפעמים נרצה לספור את כמות השורות שהתאימו במקום להציג אותן, ואז נשתמש ב-grep -c.
לעיתים נרצה להציג גם את מספר השורה שבה נמצאה ההתאמה.
במקרה כזה נשתמש ב-grep -n.
אם דרוש לנו להדגיש את המחרוזת בצבע, נשתמש ב-grep --color=auto.
כשחייבים להתמודד עם מספר תבניות חיפוש בו-זמנית, ניתן ליצור קובץ המכיל את כל התבניות ולהשתמש באופציה -f.
כדי לבצע חיפוש עם ביטויים רגולריים מורחבים נשתמש ב-egrep (או ב-grep -E).
הגדרת תחילת שורה בביטוי רגולרי נעשית עם סימן ^, והגדרת סיום שורה נעשית עם סימן $.
כך נוכל למשל לחפש שורות המתחילות במחרוזת מסוימת או מסתיימות בה.
פקודת ps משמשת להצגת מידע על תהליכים פעילים במערכת.
ניתן לשלב בה מגוון אופציות ופרמטרים כדי לקבל תצוגה מותאמת של התהליכים.
ps -ef מציג את כל התהליכים הפעילים בפורמט מורחב הכולל שם משתמש, PID (מזהה התהליך) ועוד.
אפשר גם להפעיל ps aux המציג פורמט דומה אך בסגנון BSD.
אם מעוניינים למיין את התהליכים לפי אחוז השימוש בזיכרון בסדר יורד, מומלץ להשתמש ב-ps aux --sort=-%mem.
על מנת להציג רק תהליכים של משתמש מסוים, לדוגמה המשתמש הנוכחי, נשתמש ב-ps -u $(whoami).
כאשר חשוב לראות את מבנה התהליכים כהיררכיה (מי התהליך האב ומי התהליכים הבנים), אפשר להשתמש ב-ps --forest המציג עץ תהליכים גרפי יותר.
לפעמים רוצים שליטה מדויקת על העמודות שרואים, ולכן ניתן להשתמש ב-ps -eo pid,user,comm, בשילוב עם --sort=user כדי למיין לפי שם המשתמש.
פקודת top מציגה בצורה דינמית את התהליכים הרצים, ומעדכנת בזמן אמת את השימוש במשאבי מערכת כמו מעבד וזיכרון.
כאשר מפעילים את top ניתן ללחוץ על מקשים מסוימים כדי לשנות את תצוגת המידע או לשלוט בתהליכים.
לחיצה על מקש k תפתח אפשרות להרוג תהליך (kill) ישירות מתוך top.
לחיצה על מקש f תפתח תפריט לעריכת השדות המוצגים, כדי להוסיף או להסיר עמודות ולשנות את סדרן.
אם נרצה להציג את כל התהליכונים (threads) במקום התהליכים בלבד, נלחץ על מקש H.
לעיתים נרצה לייצר פלט לאינטגרציה עם סקריפטים או לשמור לוג מפורט של הפעילות.
ניתן להשתמש באופציה -b (batch mode), המפעילה את top במצב שאינו אינטראקטיבי ושולחת את הנתונים לפלט טקסטואלי פשוט.
זה שימושי מאוד בניתוח מורכב או בהכנה למיונים גאמא סייבר.
פקודת kill מיועדת לשליחת אותות (signals) לתהליכים, כדי להשפיע על אופן הפעולה שלהם.
kill -SIGTERM <PID> שולח לתהליך אות המבקש ממנו להיסגר בצורה מסודרת, כולל שחרור משאבים והשלמת כתיבות לדיסק.
לפעמים תהליך לא מגיב והופך לבעייתי, ואז נאלצים להשתמש ב-kill -9 (SIGKILL) הגורם לסגירתו המידית של התהליך ללא אפשרות לניקוי.
כאשר רוצים לעצור תהליך זמנית ולא להרוג אותו, שולחים אות SIGSTOP באמצעות kill -STOP <PID>.
כדי להמשיך אותו מאותה נקודה בדיוק, שולחים את האות SIGCONT.
כאשר מעוניינים לשלוח אות לכל התהליכים של משתמש מסוים, אפשר להשתמש ב-pkill -SIGTERM -u user.
כאשר בודקים אם תהליך קיים מבלי להרוג אותו, ניתן להשתמש ב-kill -0 <PID>.
אם צריך לאתחל את הגדרות התהליך מבלי לסיים את כולו, שולחים אות SIGHUP.
אפשר להשתמש גם ב-killall -9 <processName> כדי להרוג את כל התהליכים תחת שם פקודה מסוים.
אות SIGQUIT סוגר את התהליך ומייצר core dump, לעיתים לצורכי ניתוח באגים מעמיק.
יחידה 8200 עושה שימוש נרחב בפקודות לינוקס לצורכי ניתוח תהליכים באופן מתקדם.
פקודת awk משמשת לעיבוד טקסט ברמה גבוהה, ומתמקדת בפיצול השורה לשדות וניתוחם.
כברירת מחדל, התו המפריד בין שדות (field separator) הוא רווח.
אם אנחנו עובדים עם קבצי CSV, נשתמש ב-awk -F ',' שמגדיר פסיק כמפריד.
כך נוכל לעבוד בצורה יעילה עם שורות מופרדות בפסיקים.
לצורך עיבוד מתקדם, awk מספקת משתנים מובנים כדוגמת NR (Number of Record) המייצג את מספר השורה הנוכחית, ו-NF המייצג את מספר השדות בשורה הנוכחית.
אפשר לעבד מידע כך שנשתמש בתנאים כמו if בתוך הסקריפט או בפורמט מקוצר.
לדוגמה, אם רוצים להדפיס רק שורות שבהן השדה הראשון גדול מ-100, נשתמש ב-awk '$1 > 100 {print}' file.
אם נרצה לבצע חישוב מצטבר על הנתונים, אפשר להשתמש בבלוקים של BEGIN ו-END.
לדוגמה, כדי לסכום ערכים בשדה הראשון אפשר לכתוב awk 'BEGIN {sum=0} {sum+=$1} END {print sum}'.
שילוב עם grep באמצעות צינור (|) מאפשר סינון מקדים של השורות ולאחר מכן עיבוד מפורט ב-awk.
הכנה למיונים גאמא סייבר כוללת התנסות מעשית בעיבוד נתונים עם awk.
הפקודות grep, ps, top, kill ו-awk מעניקות שליטה עמוקה בלינוקס.
בעזרת grep ניתן לסנן טקסט ולהציג או להסתיר שורות בהתאם לתבניות חיפוש.
ps מציגה תהליכים בפורמטים שונים, כולל יכולת מיון והבחנה בין משתמשים.
top מספק מבט חי בזמן אמת על התהליכים ומאפשר התערבות אינטראקטיבית.
kill מעניקה אפשרות לשלוט בפעילות התהליכים על ידי שליחת אותות, והודות לכך ניתן להפסיק או לחדש תהליכים לפי הצורך.
awk מעניקה יכולת עיבוד טקסט מפותחת המתאימה במיוחד לפורמטים כגון CSV או לקבצי לוג מורכבים.
בכל סביבת לינוקס מתקדמת חשוב להכיר ולתרגל את הפקודות הללו כדי לנהל ולייעל את המערכת באופן מקצועי.
מומלץ להמשיך ולהעמיק את הידע, לנסות שילובים של פקודות בצינורות ולחקור תיעוד רשמי ודוגמאות מעשיות.