שירותים ב-Linux מופעלים ברגע שהמערכת שלך מאתחלת או מאתחלת. כך תוכל ליצור שירות מערכת הפעלה אוטומטי במחשב הלינוקס שלך.
systemd הוא מנהל השירות של הרבה הפצות לינוקס ידועות. שירות הוא יחידה של תוכנית שפועלת בדרך כלל ברקע. השירותים, מטבעם, מופעלים אוטומטית ברגע שהמערכת מאתחלת ויכולים לפעול ללא השגחה.
אם אתה צריך ליצור משימה או תוכנית הפעלה אוטומטית המופעלת בכל פעם שאתה אתחול או אתחול מחדש של המערכת שלך, אתה יכול לשקול ליצור שירות חדש. בואו ללמוד כיצד ליצור שירות מערכת מותאם אישית חדש ב-Linux.
שלב 1: יצירת קובץ השירות
יש כמה שלבים הנדרשים ליצירת קובץ שירות systemd חדש. הראשון שבהם הוא יצירת קובץ היחידה עבור השירות. לפני שתיצור קובץ שירות, עליך להבין את המבנה שלו.
בוא נלמד את קובץ השירות על ידי שליפת קובץ שירות אמיתי ועובד ממערכת הלינוקס שלך. למטה, אתה יכול לראות את קובץ השירות עבור שירות vmtools daemon.
ייתכן שהשירות הספציפי הזה לא קיים במערכת שלך אלא אם כן אתה מריץ לינוקס ב-VMware עם כלי VMware מותקנים. השירות המדובר אינו חשוב מכיוון שלכל השירותים, או ליתר דיוק, קבצי יחידת השירות, יש את אותו מבנה בסיס עם כמה התאמות אישיות כנדרש.
כל קבצי שירות systemd חייבים לכלול שלושה חלקים: [שֵׁרוּת], [יחידה], ו [להתקין], וכמה פרמטרים מתחת לכל סעיף. הנה מה כל חלק מכיל ומדוע הם חשובים:
1. יחידה
ה יחידה החלק כולל מטא נתונים חשובים כמו תיאור ותלות של השירות. יש לו שלושה פרמטרים: תיאור, לפני, ו לאחר. כפי שאותו עולה, ה תיאור פרמטר מספק הקשר מסוים של השירות ומה שהוא עושה.
ה לפני ו לאחר פרמטרים מגדירים את התנאים שיש לעמוד בהם לביצוע השירות. לדוגמה, אם אתה מתחיל שירות שרת אינטרנט, תרצה שהוא יתחיל רק לאחר ששירות הרשת יהיה מקוון. אז היית מגדיר את הערך של לאחר פרמטר לשירות הרשת.
2. שֵׁרוּת
ה שֵׁרוּת הסעיף מכיל שני פרמטרים חובה: ExecStart, סוּג, ועוד כמה פרמטרים אופציונליים כמו ExecReload, ועוד.
ExecStart מגדיר את הפקודה שתתבצע כאשר השירות יתחיל בעוד שה- סוּג פרמטר קובע את סוג התהליך שיוולד.
3. להתקין
מקטע זה והנתונים שלו נקראים בכל פעם שאתה מפעיל או משבית את השירות עם פקודת systemctl.
יש לו כמה פרמטרים. אחד הנפוצים וההכרחיים שבהם הוא WantedBy. ה WantedBy פרמטר מגדיר את יחידות היעד שאמורות להתחיל בכל פעם שהשירות מופעל. ערך ברירת המחדל הוא multi-user.target.
הפרמטרים המוזכרים כאן אינם הפרמטרים היחידים שניתן להגדיר בקובץ יחידה. אתה יכול לקבל את רשימת הפרמטרים המלאה מה- תיעוד רשמי של systemd.exec או על ידי הקלדה man systemd.exec בטרמינל.
קובץ יחידת שירות systemd תמיד מסתיים ב-".שֵׁרוּת" יש לאחסן אותו ב- /etc/systemd/system/ מַדרִיך. צור את קובץ השירות באמצעות פקודת המגע עם הרשאות גבוהות על ידי הקדמת ה- סודו פקודה:
sudo touch /etc/systemd/system/.שֵׁרוּת
כעת לאחר שיצרת את קובץ השירות, בוא נעבור לאכלוס אותו בתחביר הדרוש כדי להפוך את השירות לתקף ולעבוד.
שלב 2: הגדרת קובץ השירות
לצורך הדגמה, תיצור שירות לדוגמה שפועל Nmap כדי לסרוק את היציאות במחשב שלך ואחסן את הפלט בקובץ כל שלושים שניות. כדי להשיג משימה זו, הנה כיצד לבנות את קובץ יחידת השירות:
[יחידה]
Description=הדגמה של שירות nmap מותאם אישית.
After=network.target[שֵׁרוּת]
סוג=פשוט
משתמש=שורש
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
הפעל מחדש=תמיד
RestartSec=30
[להתקין]
WantedBy=multi-user.target
למרות שהפרמטרים שהוזכרו כאן הוסברו בעבר, הבה נעבור על האופן שבו הם משפיעים על השירות החדש שנוצר שלנו וגם נחקור את הפרמטרים החדשים שהוצגו ביחידה זו: איתחול, RestartSec, ו מִשׁתַמֵשׁ.
הנה המשמעות של הפרמטרים בכל חלק:
- תיאור: טקסט קריא לאדם לתיאור הפונקציונליות של השירות.
- After=network.target: מכתיב ל-systemd שהשירות הזה תלוי בה network.target וצריך להתחיל רק אחרי ה network.target השירות הוחל. ציין זאת לאחר אינו משמש ליצירת קשרי תלות ישירים, הוא פשוט פועל כטריגר.
- סוג=פשוט: ישנם מספר סוגי שירותים. עם זאת, השירות בהדגמה זו הוא תהליך קבוע ולכן אנו מצהירים על כך. אתה יכול למצוא את כל הערכים השונים עבור זה בדף התיעוד הרשמי המקושר קודם לכן.
- הפעל מחדש=תמיד: זה אומר שבכל פעם שהשירות יוצא, הוא תמיד צריך להפעיל מחדש.
- RestartSec=30: זה מגדיר את המרווח בין כל תחילת השירות ל-30 שניות.
- User=root: זה מגדיר שהשירות יפעל כמשתמש השורש. במקרה זה, זהו שלב חובה שכן Nmap לא יוכל לפעול ללא הרשאות שורש.
- ExecStart: הנחיה זו מחזיקה את הנתיב המוחלט לתוכנית שתתבצע יחד עם כל הדגלים או הארגומנטים הדרושים כדי שהתוכנית תפעל כראוי.
- WantedBy=multi-user.target: פרמטר זה בקובץ שירות מציין איזה יעד צריך לכלול או "רוצה" את השירות. כאשר שירות כלול ביעד, זה אומר שהשירות אמור להתחיל כשהמערכת מגיעה ליעד זה במהלך תהליך האתחול. במקרה זה, השירות אמור להתחיל כאשר המערכת נכנסת למצב ריבוי משתמשים. מצב ריבוי המשתמשים הוא מצב שבו המערכת מופעלת במלואה ומאפשרת למספר משתמשים להיכנס ולהשתמש במערכת.
שלב 3: הפעלה והפעלה של השירות
כעת לאחר שיצרת את קובץ היחידה, השלבים היחידים שנותרו להפעלת השירות שלך הם הפעלתו והפעלתו. אתה יכול להפעיל ולהפעיל את השירות שלך באמצעות הפקודה systemctl.
הנה איך להשתמש ב-systemctl כדי להפעיל, להפעיל ולבדוק את מצב השירות שלך:
sudo systemctl אפשר .שֵׁרוּת
sudo systemctl התחל .שֵׁרוּת
מצב sudo systemctl .שֵׁרוּת
כעת, השירות המותאם אישית שלך אמור להיות פועל! במקרה זה, אתה אמור לראות סריקת Nmap הפועלת כל שלושים שניות והפלט מאוחסן ב- results.txt קובץ בספריית הבית.
הגדרת שירות מערכתי בלינוקס היא קלה!
למרות שהגדרת שירות מותאם אישית מאפס עשויה להיראות מרתיעה בהתחלה, זו דרך די קלה להגדיר ליצור תהליך ביצוע עצמי ללא השגחה כדי לבצע עבורך משימות שחוזרות על עצמן ולהגביר את שלך פִּריוֹן.
בשירות ההדגמה, בקושי שרטנו את פני השטח כיצד ניתן להגדיר ולהגדיר שירות. כדי ללמוד הכל על איך אתה יכול להתאים אישית את השירות שלך, מומלץ לעבור על התיעוד הרשמי המקושר בהערה.
אם הגדרה ותחזוקה של שירות מרגישה כמו משימה יותר מדי עבורך, שקול לבדוק דרך חלופית להפוך משימות חוזרות ונשנות בלינוקס.