הקדמה
בשנים האחרונות, ההפצות של Linux עברו באופן מתמד ממערכות init אחרות ל־systemd
. חבילת הכלים של systemd
מספקת מודל init מהיר וגמיש לניהול של שרת שלם מהאתחול ואילך.
במדריך זה, נספק לך סקירה מהירה של הפקודות החשובות ביותר שתרצה לדעת לניהול של שרת המופעל על systemd
. אלו צריכות לעבוד על כל שרת שמיישם systemd
(כל גרסת מערכת ההפעלה ב Ubuntu 15.04 או מעלה, Debian 8, CentOS 7, Fedora 15). בואו נתחיל.
ניהול יחידות בסיסיות
העצם הבסיסי שה־systemd
ניהל ופועל עליו הוא "יחידה". יחידות יכולות להיות מסוגים שונים, אך הסוג הנפוץ ביותר הוא "שירות" (מסומן בקובץ יחידה המסתיים ב־.service
). כדי לנהל שירותים על שרת מופעל על systemd
, הכלי העיקרי שלנו הוא הפקודה systemctl
.
כל הפקודות הרגילות של מערכת init יש להן פעולות שקולות עם הפקודה systemctl
. נשתמש ביחידת השירות nginx.service
כדי להדגים (תצטרכו להתקין את Nginx עם מנהל החבילות שלכם כדי לקבל קובץ שירות זה).
לדוגמה, אנו יכולים להתחיל את השירות על ידי קלידה:
ניתן לעצור את זה שוב על ידי הקלדת:
כדי לאתחל את השירות, ניתן להקליד:
כדי לנסות לטעון מחדש את השירות מבלי להפריע לפעילות רגילה, ניתן להקליד:
הפעלת או השבתת יחידות
ברירת המחדל, רוב קבצי היחידות של systemd לא מופעלים אוטומטית בהפעלת המחשב. כדי להגדיר פונקציונליות זו, עליך ל"הפעיל" את היחידה. זה מחבר אותו ל-"יעד" הפעלת מערכת מסוים, מאפשר לו להתפעל כאשר היעד הזה מופעל.
כדי לאפשר לשירות להתחיל אוטומטית בעת האתחול, הקלד:
אם ברצונך לנטרל שוב את השירות, הקלד:
קבלת מבט על מצב המערכת
יש הרבה מידע שאפשר לקבל משרת systemd כדי לקבל מבט על מצב המערכת.
לדוגמה, כדי לקבל את כל קבצי היחידות ש-systemd מציין כ"פעילים", הקלד (אפשר להשאיר מחוץ לזה את ה־list-units
מאחר וזהו התנהגות ברירת המחדל של systemctl):
לרשימת כל היחידות שטען או שניסה לטעון systemd
לזיכרון, כולל אלה שאינם פעילים כרגע, הוסף את המתג --all
:
לרשימת כל היחידות שמותקנות במערכת, כולל אלה שלא systemd
ניסתה לטעון לזיכרון, הקלד:
צפייה במידע בסיסי של יומן השגיאות
A systemd
component called journald
collects and manages journal entries from all parts of the system. This is basically log information from applications and the kernel.
לצפייה בכל רשומות היומן, החל מהרשומה הכי ישנה, הקלד:
בברירת המחדל, זה יציג לך רשומות מהזיכרונות הנוכחיים והקודמים אם journald
מוגדר לשמור רשומות קודמות של הזיכרון. מספר ההפצות מאפשרות זאת כברירת מחדל, בעוד אחרות אינן (כדי לאפשר זאת, ערוך את קובץ ה- /etc/systemd/journald.conf
והגדר את האפשרות Storage=
ל"persistent", או צור את התיקייה הקבועה על ידי הקלדת sudo mkdir -p /var/log/journal
).
אם ברצונך לראות רק את רשומות היומן מההפעלה הנוכחית, הוסף את הדגל -b
:
לצפייה רק בהודעות הליבה, כגון אלה שנצטטות typicallם ב- dmesg
, תוכל להשתמש בדגל -k
:
שוב, תוכל להגביל זאת רק להפעלה הנוכחית על ידי הוספת הדגל -b
:
שאילתת מצב יחידות ויומנים
בעוד הפקודות הנ"ל נתנו לך גישה למצב הכללי של המערכת, תוכל גם לקבל מידע על מצבם של יחידות פרטיות.
כדי לראות סקירה של מצב הנוכחי של יחידה, תוכל להשתמש באפשרות status
עם פקודת systemctl
. זה יראה לך האם היחידה פעילה, מידע על התהליך, והערות יומן האחרונות:
כדי לראות את כל ערכי היומן עבור היחידה בפועל, נתן את האפשרות -u
עם שם היחידה לפקודת journalctl
:
כפי שתמיד, תוכל להגביל את הערכים להפעלה הנוכחית על ידי הוספת הדגל -b
:
בדיקת יחידות וקבצי יחידות
עכשיו, אתה יודע כיצד לשנות את מצב היחידה על ידי הפעלתה או עצירתה, ואתה יודע כיצד להציג מידע על המצב והיומן כדי להבין מה קורה עם התהליך. אך, עדיין לא ראינו כיצד לבדוק את הנושאים הנוספים של יחידות וקבצי יחידות.
A unit file contains the parameters that systemd
uses to manage and run a unit. To see the full contents of a unit file, type:
כדי לראות את עץ התלות של יחידה (אילו יחידות systemd
ינסה להפעיל כאשר מתחילים את היחידה), הקלד:
זה יציג את היחידות התלויות, עם היחידות target
מורחבות באופן רקורסיבי. כדי להרחיב את כל היחידות התלויות באופן רקורסיבי, עבור עם הדגל --all
:
לבסוף, כדי לראות את הפרטים ברמה הנמוכה של הגדרות היחידה במערכת, ניתן להשתמש באפשרות show
:
זה יעניק לך את ערכו של כל הפרמטרים שניהפקים על ידי systemd
.
שינוי קבצי יחידות
אם יש צורך לבצע שינוי בקובץ יחידה, systemd
מאפשר לך לבצע שינויים מהפקודה systemctl
עצמה כך שאין צורך לעבור אל מיקום הדיסק הממשי.
כדי להוסיף קטע קובץ יחידה, שניתן להשתמש בו כדי להוסיף או לשכפל הגדרות בקובץ היחידה המקורי, פשוט קרא לאפשרות edit
על היחידה:
אם אתה מעדיף לשנות את כל תוכן קובץ היחידה במקום ליצור קטע, עבור עם הדגל --full
:
לאחר ששינית קובץ יחידה, עליך לטעון מחדש את תהליך systemd
עצמו כדי לאפשר לשינויים שלך להיכנס:
שימוש ביעדים (Runlevels)
עוד פונקציה של מערכת ההפעלה היא להעביר את השרת עצמו בין מצבים שונים. מערכות init מסורתיות כלל מתייחסות אליהם כ"runlevels", מאפשרות למערכת להיות ברמה מסוימת בכל עת.
ב־systemd
, משתמשים ב-"targets" במקום זאת. מטרות הן בגדול נקודות סנכרון שהשרת יכול להשתמש בהן כדי להביא את השרת למצב מסוים. קבצי שירות ויחידות אחרות יכולים להיות קשורים למטרה ומספר מטרות יכולות להיות פעילות באותו זמן.
כדי לראות את כל המטרות הזמינות במערכת שלך, הקלד:
כדי לצפות במטרת ברירת המחדל ש־systemd
מנסה להשיג בעת ההפעלה (שבתורה מפעילה את כל קבצי היחידות שמהווים את עץ התלות של אותה מטרה), הקלד:
ניתן לשנות את המטרה הברירת מחדל שתשמש בעת ההפעלה על ידי שימוש באפשרות set-default
:
כדי לראות אילו יחידות קשורות למטרה, ניתן להקליד:
ניתן לשנות את מצב המערכת כדי לעבור בין מטרות באמצעות האפשרות isolate
. זה יעצור כל יחידות שאינן קשורות למטרה המצויה. וודאו שהמטרה שאתם מבודדים אינה מפסיקה שירותים חיוניים:
עצירת או הפעלה מחדש של השרת
עבור חלק מהמצבים העיקריים שבהם מערכת יכולה לעבור אליהם, קיימים קיצורי דרך. לדוגמה, כדי לכבות את השרת, ניתן להקליד:
אם ברצונך לאתחל את המערכת מחדש במקום זאת, ניתן לבצע זאת על ידי קלידת:
ניתן להפעיל במצב הצלת על ידי קלידה:
שים לב כי רוב מערכות ההפעלה כוללות ציודי מונחים מסורתיים לפעולות אלו, כך שניתן פשוט להקליד sudo poweroff
או sudo reboot
בלי systemctl
. עם זאת, אין מערכות שבהן ניתן להבטיח שנעשה זאת.
שלבים הבאים
כעת, עליך להבין את היסודות של ניהול שרת שמשתמש ב־systemd
. עם זאת, יש עוד הרבה ללמוד כאשר הצרכים שלך מתרחבים. למטה קישורים למדריכים עם מידע מעמיק יותר על חלק מהרכיבים שדנו במדריך זה:
- איך להשתמש ב־Systemctl לניהול שירותים ויחידות של Systemd
- איך להשתמש ב־Journalctl לצפייה ולעריכה של יומני Systemd
- הבנת יחידות וקבצי יחידה של Systemd
על ידי למידה כיצד להשתמש ביתרונות המערכת שלך, ניתן לשלוט במצב המכונות שלך ולנהל את השירותים והתהליכים שלך בצורה יותר קלה.