מה זה שירות בלינוקס - service¶
כשאתם מתקינים שרת אתר על מכונת לינוקס, אתם מצפים שהוא יעבוד גם אחרי שסגרתם את הטרמינל, וגם אחרי שהמחשב הופעל מחדש. איך זה קורה? התשובה היא שירות - service. זה אחד המושגים הכי חשובים בניהול מערכת לינוקס, וברגע שתבינו אותו, ניהול שרתים יפסיק להרגיש כמו קסם.
מה זה בעצם שירות¶
שירות הוא תוכנית שרצה ברקע, בלי שאתם צריכים לשבת מולה ולהפעיל אותה ידנית. הוא לא תלוי בכך שהטרמינל שלכם פתוח, ולא נעצר כשאתם מתנתקים מהשרת. שרתי אתרים, מסדי נתונים, שירותי SSH שמאפשרים לכם להתחבר מרחוק - כל אלה רצים כשירותים. תוכנית כזו נקראת גם daemon, מונח ותיק שמגיע מהעולם של יוניקס, אבל בשפה היומיומית פשוט אומרים "שירות".
ההבדל בין להריץ תוכנית רגילה מהטרמינל לבין להריץ אותה כשירות הוא שהשירות מנוהל על ידי מערכת ייעודית שדואגת להפעיל אותו אוטומטית עם עליית המחשב, להפעיל אותו מחדש אם הוא קרס, ולתת לכם דרך אחידה לבדוק את הסטטוס שלו.
systemd - המנהל שמפקח על הכל¶
ברוב הפצות הלינוקס המודרניות, כולל אובונטו, המנהל שאחראי על שירותים נקרא systemd. הכלי שאתם משתמשים בו כדי לתקשר איתו נקרא systemctl, וזו הפקודה שתשתמשו בה הכי הרבה כשאתם מנהלים שירותים:
הפקודה הזאת מציגה לכם אם השירות nginx רץ, מתי הוא התחיל, ואם הייתה לו שגיאה לאחרונה. זו בדרך כלל הפקודה הראשונה שמריצים כשמשהו לא עובד כמו שצריך.
הפעלה, עצירה והפעלה מחדש¶
שלוש הפעולות הבסיסיות ביותר על שירות הן:
start מפעיל את השירות אם הוא לא רץ, stop עוצר אותו, ו-restart עוצר ומפעיל מחדש - שימושי במיוחד אחרי ששיניתם הגדרות ואתם רוצים שהשינוי ייכנס לתוקף.
יש עוד פקודה חשובה שמבלבלת מתחילים - enable:
זה לא מפעיל את השירות עכשיו, אלא אומר למערכת "כשהמחשב יעלה מחדש, תפעיל את השירות הזה אוטומטית". זה ההבדל בין שירות שרץ פעם אחת לבין שירות שמוגדר לרוץ תמיד. הרבה פעמים משתמשים בשתי הפקודות ביחד - systemctl enable --now nginx גם מפעיל את השירות מיד וגם מבטיח שהוא יעלה אוטומטית בהפעלה הבאה.
למה שירות נכשל, ואיך לגלות למה¶
שירות יכול להיכשל מסיבות שונות - קובץ הגדרות שגוי, פורט שכבר תפוס, הרשאה חסרה. הדרך לגלות מה קרה היא לרוב שילוב של systemctl status, שנותן תמונה מהירה, וjournalctl -u nginx, שמציג את הלוגים המפורטים של השירות הספציפי הזה. זה בדיוק הרגע שבו הבנת קריאת לוגים הופכת קריטית - שירות לא רץ בלי הודעת שגיאה ברורה על המסך, אלא כותב את הסיבה ללוג, וזה עליכם לדעת לקרוא אותו.
למה זה כל כך מרכזי בעבודה עם שרתים¶
כמעט כל דבר שרץ על שרת לינוקס - מבסיסי נתונים ועד שרתי אתרים ועד כלים פנימיים שאתם כותבים בעצמכם - בסופו של דבר מוגדר כשירות. אם אתם מתכננים אי פעם להעלות אפליקציה משלכם לשרת, תצטרכו להבין איך להפוך אותה לשירות שרץ בעצמאות, שורד הפעלות מחדש, ומדווח בבירור אם הוא נופל. זו לא מיומנות של סיסטם אדמין בלבד, זו מיומנות בסיסית לכל מי שרוצה שהקוד שלו יחיה מעבר לחלון הטרמינל שבו הוא כתב אותו.
איך תופסים את זה¶
הדרך הכי טובה להבין שירותים היא להתנסות בעצמכם - להתקין שירות פשוט, לעצור אותו, להפעיל אותו מחדש, ולראות מה קורה בלוגים בכל שלב. זה בדיוק מה שאנחנו עושים בפרק שירותים ולוגים בקורס לינוקס הבסיסי שלנו, עם תרגילים מודרכים שבונים את ההבנה הזאת שלב אחר שלב.
למדו על שירותים בקורס לינוקס הבסיסי
ואם שירות מסרב לעלות אצלכם ואתם לא מבינים למה, זו בדיוק השאלה שכדאי לשאול בדיסקורד.