דרך נכונה להשתמש ב־systemctl של Ubuntu כדי לשלוט ב־Systemd

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

במדריך הזה, תלמד כיצד לנהל שירותי Systemd על מחשב Ubuntu על ידי הרצת פקודות שונות של systemctl.

מוכן? הגיע הזמן להתעמק!

דרישות מקדימות

המדריך הזה יהיה הדגמה מעשית אך אינו דורש כלים מיוחדים, כל עוד אתה ב-Ubuntu 16 ומעלה, אתה בסדר. המדריך משתמש בגרסה 20.04.3 LTS של Ubuntu לצורך הדגמות.

מהו Ubuntu Systemctl?

לפני שאתה מפעיל פקודות systemctl של Ubuntu, כדאי להבין מה זה Systemctl. Systemctl הוא כלי שורת פקודה לשליטה וניהול systemd ושירותי מערכת.

בקצרה, Systemctl הוא לוח בקרה או מנהל שירות עבור מערכת ה-init של systemd init להפעלת רכיבים לאחר הטעינה של לינוקס. Systemctl הוא אוסף של ספריות, דמונים, וכלי שתוכל להשתמש בהם לניהול שירותים.

כדי לנהל שירותים בצורה יעילה, כדאי להכיר בשלבים השונים של שירותים, כפי שמוצגים להלן:

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

רישום כל השירותים

עכשיו שאתה מכיר את המצבים השונים של השירותים, אולי אתה רוצה לראות רשימה של כל השירותים במחשב ה-Ubuntu שלך. רישום כל השירותים מספק מספר מידע שיכול לסייע לך בניהול השירותים.

פתח את הטרמינל והרץ את הפקודה הבאה כדי לרשום את כל יחידות השירות (list-units) (פעיל, רץ, יצא או נכשל) עם השירות המוגדר כסוג היחידה (--type=service).

systemctl list-units --type=service

בחר את אחד השירותים מהרשימה שברצונך לנהל מאוחר יותר במדריך הזה ושים לב לשם ה-יחידה (לדוגמה, apache2). לחץ על מקש הרווח כדי לגלול למטה, או לחץ על המקש "Q" כדי לצאת מהפקודה.

בכל מקרה, הנה מדריך טוב על כתיבת סקריפטים בשל קור.

Listing All Services (active, running, exited, or failed)

רשומת שירותים עם המצב הספציפי

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

הרץ אחד מהפקודות הבאות כדי לרשום את כל השירותים הפעילים (--type=service --state=active), הרצים והסתיימו.

systemctl list-units --type=service --state=active
Listing Services on “active” State

באופן דומה, כדי לרשום רק שירותים שסתיימו או רק שירותים הרצים, שנה את ערך המצב מ-active ל-running או ל-exited, כפי שמוצג בפקודות הבאות:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

רשום שירותים מאופשרים

בנוסף לרשום שירותים פעילים, רצים וסתיימו, תוכל גם לרשום שירותים מאופשרים ולא מאופשרים על ידי שימוש בפקודת grep.

הרץ אחת מהפקודות הבאות כדי לרשום (list-unit-files) שירותים מנוטרלים או מאופשרים (--type=service).

## רשימת כל השירותים המאופשרים
systemctl list-unit-files --type=service | grep enabled
## רשימת כל השירותים המנוטרלים
systemctl list-unit-files --type=service | grep disabled

שים לב לשירות מופעל, כפי שמוצג למטה, מאחר שתזדקק לו מאוחר יותר כדי לנטרל שירות, אך המדריך הזה משתמש ב־שירות acpid.service לצורך הדגמה. acpid הוא דמון נרחב התקנים והפעלת כוח (ACPI) התומך באירועים של ממשק התצורה והכוח המתקדם.

Listing Enabled Services

רשימת מאפייני השירות

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

הפעל את הפקודה למטה כדי להציג את מאפייני השירות (acpid.service) בפורמט key=value.

systemctl show acpid.service
Showing Service Properties

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

הפעל את הפקודה למטה כדי להציג את מאפייני השירות (acpid.service) MainPID.

systemctl show acpid.service -p MainPID
Showing Specific Service Property

ניהול שירות ספציפי

מאחר שיסודות רשימת השירותים נמצאים במקום, הגיע הזמן לנהל שירות ספציפי (יחיד) על ידי הרצת הפקודות systemctl stop ו־start.

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

systemctl status apache2

הפעל את הפקודה למטה בטרמינל כדי לראות את המידע המפורט של השירות apache2, כולל מידע כמו status.

Viewing apache2 Service Status

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

עצירת שירות

ייתכן שתרצה לעצור שירות שנשאר רץ ברקע. במקרה כזה, פקודת systemctl stop היא מה שאתה צריך. הפעל את פקודת ה־systemctl למטה כדי לעצור את השירות apache2.

sudo systemctl stop apache2

אם תעדיפו לעצור יחד יותר משירות אחת, יש לציין כל שירות בנפרד מופרדים ברווח, כמו כן: sudo systemctl stop sshd apache2. בפקודה זו, תעצור את שירותי sshd וְapache2 במקביל.

כעת הפעל את פקודת ה־systemctl status כמו שעשית קודם כדי לוודא אם השירות apache2 נעצר.

systemctl status apache2

תוכל לראות למטה שהמצב של שירות apache2 שונה ל־inactive (dead), המציין שהשירות נעצר.

Verifying if apache2 Service is Stopped

הפעלת שירות

כיצד להתחיל שירות אם שמת לב שהוא לא פועל בכלל? אתה מריץ פקודה דומה לעצירת השירות, שהיא פקודת systemctl start. הרץ את הפקודה הבאה כדי להתחיל את השירות apache2.

sudo systemctl start apache2

כמו בעצירת שירותים מרובים, ניתן גם להתחיל שירותים מרובים בשורת פקודה אחת. החלף את הפקודה stop בפקודה start כך: sudo systemctl start sshd apache2

עכשיו הרץ את הפקודה systemctl status פעם נוספת כדי לוודא אם השירות apache2 רץ.

systemctl status apache2

אם אתה רואה את המצב פעיל (פועל), כפי שמוצג למטה, אז אתה בסדר מאוד מאחר והשירות חוזר לפעילות.

Starting apache2 service

אם אתה מעדיף לאתחל את השירות מייד, ללא צורך לעצור אותו תחילה. אם כן, בחר בפקודת systemctl restart במקום זאת, כך: sudo systemctl restart apache2

הפעלה או כיבוי שירות

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

התת-פקודה enable מאפשרת לך להגדיר את הגדרות ההפעלה המותקנות ברירת המחדל במערכת שלך, בעוד שהתת-פקודה disable מונעת משירות להתקיים בהפעלת המערכת.

הריץ את הפקודה systemctl למטה כדי לבטל את השירות (acpid.service) שהעברת לסעיף "רשימת השירותים שמופעלים". הזן את סיסמת הסופר שלך כדי לאשר את הרצת הפקודה.

sudo systemctl disable acpid.service
Disabling a Service

עכשיו, מאחר שהשירות acpid.service תומך בתצורה מופנית למערכת הפעלה ובניהול חשמל (OSPM); עליך להפעיל אותו מחדש. הפקודה להפעלת השירות דומה להשבתת שירות.

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

sudo systemctl enable acpid.service
Enabling a Service

מסקנה

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

עם הידע החדש שרכשת, למה לא לאוטומטז את בקרת השירותים במערכת האובונטו שלך?

Source:
https://adamtheautomator.com/ubuntu-systemctl/