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

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

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


רשום שירותים מאופשרים
בנוסף לרשום שירותים פעילים, רצים וסתיימו, תוכל גם לרשום שירותים מאופשרים ולא מאופשרים על ידי שימוש בפקודת grep
.
הרץ אחת מהפקודות הבאות כדי לרשום (list-unit-files
) שירותים מנוטרלים
או מאופשרים
(--type=service
).
שים לב לשירות מופעל, כפי שמוצג למטה, מאחר שתזדקק לו מאוחר יותר כדי לנטרל שירות, אך המדריך הזה משתמש ב־שירות acpid.service לצורך הדגמה. acpid הוא דמון נרחב התקנים והפעלת כוח (ACPI) התומך באירועים של ממשק התצורה והכוח המתקדם.

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

עכשיו, אם אתה מחפש רק את מאפיין השירות הספציפי, תוכל להעביר את הדגל -p
עם שם המאפיין.
הפעל את הפקודה למטה כדי להציג את מאפייני השירות (acpid.service
) MainPID
.

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

אין צורך להזין את סיסמת ה־sudo כאשר אתה רואה את מצב השירות, מכיוון שאינך שונה את מצב השירות. אך אם תרצה להתחיל, לעצור או לאתחל שירות, עליך להוסיף את פקודת ה־sudo ולהזין את סיסמת ה־sudo.
עצירת שירות
ייתכן שתרצה לעצור שירות שנשאר רץ ברקע. במקרה כזה, פקודת systemctl stop
היא מה שאתה צריך. הפעל את פקודת ה־systemctl
למטה כדי לעצור את השירות apache2
.
אם תעדיפו לעצור יחד יותר משירות אחת, יש לציין כל שירות בנפרד מופרדים ברווח, כמו כן:
sudo systemctl stop sshd apache2
. בפקודה זו, תעצור את שירותי sshd וְapache2 במקביל.
כעת הפעל את פקודת ה־systemctl status
כמו שעשית קודם כדי לוודא אם השירות apache2 נעצר.
תוכל לראות למטה שהמצב של שירות apache2 שונה ל־inactive (dead), המציין שהשירות נעצר.

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

אם אתה מעדיף לאתחל את השירות מייד, ללא צורך לעצור אותו תחילה. אם כן, בחר בפקודת
systemctl restart
במקום זאת, כך:sudo systemctl restart apache2
הפעלה או כיבוי שירות
אולי יש שירות מסוים שאתה מעדיף להתחיל או למנוע ממנו להתחיל בהפעלת המערכת. אם כן, הרצת הפקודה systemctl
enable
או disable
היא הדרך הטובה ביותר.
התת-פקודה enable
מאפשרת לך להגדיר את הגדרות ההפעלה המותקנות ברירת המחדל במערכת שלך, בעוד שהתת-פקודה disable
מונעת משירות להתקיים בהפעלת המערכת.
הריץ את הפקודה systemctl
למטה כדי לבטל את השירות (acpid.service
) שהעברת לסעיף "רשימת השירותים שמופעלים". הזן את סיסמת הסופר שלך כדי לאשר את הרצת הפקודה.

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

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