לינוקס והמעטפת - יסודות והתמצאות
המודול הפותח של הסדרה. נכיר את לינוקס ליבה (Kernel) בקוד פתוח שנכתבה ב-1991 ותואמת לעקרונות UNIX ונבין מהי הפצה ולמה נעבוד ב-Ubuntu. נראה את שלוש שכבות המערכת (Kernel, Shell ותוכניות) ונעקוב אחרי מה שקורה מהרגע שמקלידים פקודה ועד שהיא מתבצעת.
מכאן עוברים לעבודה מעשית בטרמינל: קריאת ה-prompt וההבדל בין $ ל-#, מבנה של כל פקודה (פקודה, אפשרויות, ארגומנטים), והפקודה הראשונה, ls. המודול מקנה גם שלוש מיומנויות שילוו את הלומד לאורך כל הסדרה: השלמה אוטומטית ב-Tab, עבודה עם היסטוריית הפקודות, ומציאת תיעוד לבד עם man ו-apropos.
מערכת הקבצים: ניווט, ניהול וקישורים
סיור מודרך בעץ מערכת הקבצים של לינוקס: מה נמצא ב-/home, /etc, /var, /tmp ו-/usr, ואיך מתמצאים בו בעזרת נתיבים מוחלטים ויחסיים והקיצורים ., .., ~ ו--. נלמד לנווט (pwd, cd), ליצור ספריות וקבצים, להעתיק, להעביר ולמחוק — ונבין למה בלינוקס אין סל מיחזור ולמה rm -rf דורשת זהירות מיוחדת.
החלק השני של המודול חושף את מה שקורה מתחת לשם הקובץ: inode, וההבדל בין קישור קשיח (ln) לקישור סימבולי (ln -s), כולל זיהוי קישור שבור ובחירה נכונה ביניהם. המודול נחתם בבדיקת שטח דיסק עם df ו-du.
טקסט: צפייה, עריכה וחיפוש
בלינוקס כמעט הכול הוא טקסט: קבצי הגדרות, לוגים, סקריפטים. המודול מלמד לקרוא טקסט בכלי המתאים (cat, less, head, tail ומעקב חי עם tail -f), לספור ולהשוות (wc, diff) ולמיין ולספור כפילויות (sort, uniq -c). משם עוברים לעריכה בטרמינל: nano לעבודה יומיומית, ו-vim ברמה שמאפשרת לערוך, לשמור ובעיקר לצאת בלי להיתקע.
החלק השני עוסק בחיפוש: grep לחיפוש בתוך קבצים, עם האפשרויות החשובות וביטויים רגולריים בסיסיים, ו-find לאיתור קבצים לפי שם, סוג, גודל וזמן שינוי כולל ביצוע פעולה עם -exec. המודול נחתם בהשוואה בין find, locate ו-which ומתי לבחור בכל אחד
הרכבת פקודות: הפניה, צינורות ושרשור
הכוח האמיתי של לינוקס הוא בחיבור בין כלים קטנים. המודול מציג את שלושת הזרמים stdin, stdout ו-stderr ומלמד להפנות כל אחד מהם: פלט לקובץ (> ו->>), קלט מקובץ (<), ושגיאות בנפרד (2> ו-2>&1, כולל החשיבות של סדר ההפניות), וגם להשליך פלט מיותר ל-/dev/null.
משם בונים שרשראות עיבוד עם צינורות (|), שומרים ורואים בו-זמנית עם tee, ומעבירים רשימות לפקודות עם xargs בבטחה, גם כשיש רווחים בשמות. המודול נחתם בקוד היציאה $? ובשרשור מותנה עם &&, || ו-;, שמאפשר לבנות פקודות שממשיכות רק כשהשלב הקודם הצליח.
משתמשים, הרשאות ו-sudo
לינוקס היא מערכת רב-משתמשית, וההרשאות הן מה שמונע ממשתמש אחד לפגוע בעבודה של אחר או במערכת עצמה. המודול מתחיל בזהות: מי אני (whoami, id, groups), ואיפה מוגדרים המשתמשים והקבוצות (/etc/passwd, /etc/group, /etc/shadow). משם נפענח את שורת ls -l תו אחר תו, ונבין את המשמעות של r, w ו-x שונה בקובץ ושונה בספרייה.
החלק המעשי מלמד לשנות הרשאות (chmod בצורה סימבולית ובצורה אוקטלית, עם הערכים הנפוצים 644, 755 ו-600), לשנות בעלות (chown, chgrp) ולהבין את umask. המודול נחתם במשתמש root: למה לא עובדים כמוהו, מה sudo עושה בפועל, ההבדל בין sudo, su ו-sudo -i, וכללי שימוש בטוח.
תהליכים, שירותים ולוגים
המודול עונה על שלוש שאלות האבחון של כל מנהל מערכת: מה רץ עכשיו, מה רץ תמיד, ומה קרה קודם. בחלק הראשון נכיר תהליכים PID, PPID ועץ התהליכים ונלמד לצפות בהם עם ps ועם top/htop, כולל קריאת load average. נעביר תהליכים בין חזית לרקע (&, Ctrl+Z, bg, fg, jobs), נריץ תהליך שישרוד ניתוק (nohup), ונסיים תהליכים נכון עם סיגנלים ולמה kill -9 הוא לעולם לא הצעד הראשון.
החלק השני עוסק בשירותים ובלוגים: מהו systemd, ניהול שירותים עם systemctl (status, start, stop, enable וההבדל בין start ל-enable), וקריאת יומן המערכת עם journalctl ומסנניו. המודול נחתם בקבצי הלוג המסורתיים ב-/var/log ובשאלה מתי להשתמש בכל אחד.
ארכוב, ניהול תוכנה וגישה מרחוק
שלושה נושאים מעשיים שכל עבודה עם שרת דורשת. הראשון הוא ארכוב ודחיסה: ההבדל בין השניים, gzip ומשפחתו, ו-tar יצירה, צפייה בתוכן לפני חילוץ, וחילוץ למקום מוגדר לצד zip לתאימות עם Windows. השני הוא ניהול תוכנה ב-Ubuntu עם apt: ההבדל בין update ל-upgrade, התקנה, הסרה וחיפוש, מאגרים וחתימות דיגיטליות, PPA ו-snap.
הנושא השלישי הוא גישה מרחוק: התחברות לשרת ב-ssh, הבנת אזהרת מפתח המארח, יצירת זוג מפתחות והתחברות ללא סיסמה, קובץ ~/.ssh/config, והעברת קבצים בין מכונות עם scp ו-rsync כולל משמעות הלוכסן הסופי והרצת ניסיון לפני סנכרון שמוחק.
משתני סביבה וכתיבת סקריפטים ב-Bash
המודול המסכם של הסדרה לוקח את כל מה שנלמד ושם אותו בקובץ. בחלק הראשון נכיר משתנים: משתנה מעטפת והתחביר שמפיל מתחילים, ההבדל בין משתנה מעטפת למשתנה סביבה (export), המשתנים המרכזיים ו-PATH ומה באמת אומרת ההודעה "command not found". נלמד לשמור הגדרות לתמיד ב-.bashrc וב-.profile, לטעון אותן עם source, וליצור קיצורי דרך עם alias.
החלק השני הוא כתיבת סקריפטים: shebang, chmod +x והרצה, שלוש דרכי הרצה והבדלים ביניהן, ארגומנטים ($0, $1, $@, $#), קלט עם read, תנאים עם if ולולאות for ו-while. המודול נחתם בכללי כתיבה בטוחה (set -euo pipefail, מרכאות סביב משתנים, מצב dry-run) ובסקריפט מסכם שמשתמש בכלים מכל הסדרה.