logo

Linux Daemon

מה זה דמון?

דמון הוא סוג של תוכנית על מערכת הפעלה דמוית UNIX שפועלת ברקע בצורה לא פולשנית, במקום בגישה ישירה של משתמש. זה ממתין להיות מופעל על ידי הופעת מצב או אירוע מסוים.

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

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

אנקפסולציה java

אין זה חובה שמבצע מצב או פעולה יידע שהדמון מקשיב.

עם זאת, לעתים קרובות תוכניות יישמו פעולה רק בגלל שידוע שהיא תעורר דמון באופן מרומז.

דמון נקרא גם תהליכי רקע. זוהי תוכנית UNIX או לינוקס שפועלת בתוך הרקע. כמעט כל דמון מכיל שמות שמסיימים באות 'd'. לדוגמה, sshd, זה מנהל חיבורים של גישה מרחוק של SSH, או דמון httpd שמנהל את שרת Apache. לעתים קרובות, לינוקס מתחילה דמונים בזמן ההתחלה.

סקריפטים של מעטפת שונים נשמרים בתוך הספרייה שהיא /etc/init.d. סקריפטים אלה משמשים להפעלה ועצירה של דמונים.

תהליכי לינוקס

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

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

  • קבוצה
  • אינטראקטיבי
  • דימון

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

קפיץ וקפיץ mvc

התהליך האינטראקטיבי מבוצע באופן אינטראקטיבי על ידי המשתמש בשורת הפקודה.

הדמון מזוהה על ידי מערכת כמו אותם תהליכים שתהליך האב שלהם מכיל PID של אחד.

תמיד, זה מגדיר את התהליך init. תהליך ה-init הוא התהליך הראשוני שמתחיל כאשר מערכת לינוקס מופעלת והוא נשאר מעל המערכת עד כיבוי המערכת.

ה-init יכול לאמץ כל סוג של תהליך שתהליך האב שלו מסתיים או מת מבלי להמתין למצב של תהליך הילד.

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

היסטוריה של דמונים

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

כעת, מספר דמונים מתחילים רק לפי הצורך ועל ידי דמון אחד (xinetd) במקום לפעול ברציפות. ה-xinetd ידוע בתור שרת העל TCP/IP.

זה מתחיל בזמן ההתחלה וגם הוא מאזין ליציאות שונות המוקצות לאותם תהליכים הרשומים בתוך קובץ התצורה, כלומר /etc/xinetd.conf או /etc/inetd.conf.

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

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

נקודות מפתח של דמונים

כמה נקודות מפתח חשובות של דמונים מוסברות להלן:

  • המילה דמון לקוחה מהדמון המתודולוגיה היוונית. אלו היו יצורים על טבעיים שנמצאים בין בני תמותה לאלים ובעלי כוח או ידע ייחודיים.
  • בשנת 1963, המונח דמון יושם בתחילה בהקשר מערכתי בפרויקט החלוצי MAC בעזרת IBM 7094.
  • הוא נוצר בהשראת הדמון של התרמודינמיקה והפיזיקה של מקסוול שהיה סוכן מופשט שתמך במולקולות מיון במהירויות שונות ועבד ברקע ללא לאות.
  • לאחר מכן, המונח שימש לתיאור התהליכים של הרקע שעבדו ליישם את מטלות המערכת ללא לאות.
  • מחשב הדמון הראשון היה תוכנית שיצרה גיבויים של קלטות באופן אוטומטי.
  • מונח זה נוצל לשימוש במחשב. זה היה כטופס קצר עבור דיסק וביצוע MONitor.
  • תוכניות שונות המכונות שירותים שה-demons מתפקדים במערכת ההפעלה Microsoft Windows. עם זאת, המילה daemon מיושם לפעמים גם במערכות אלו.

יישום של Daemons

יוניקס כמו מערכות

התהליך של מערכת דמוית יוניקס הוא דמון אם תהליך האב שלו מת והדמון הזה מונה לתהליך ה-init (תהליך מספר 1) כתהליך האב ואינו מכיל טרמינל שליטה באופן הטכני לחלוטין.

עם זאת, דמון עשוי להיות כל תהליך של רקע בין אם הבן של התהליך ההתחלתי ובין אם לאו.

קפיץ mvc

הטכניקה הבסיסית לפרוצדורה הופכת לדמון במערכת הדומה ל-UNIX כאשר ההליך מתחיל דרך שורת הפקודה או סקריפטים להפעלה כמו סקריפט System Starter או סקריפט init, כולל:

  • מחיקת משתנים מיותרים דרך הסביבה באופן אופציונלי.
  • ריצה כמשימת רקע על ידי יציאה והתפצלות. זה מאפשר להורה של הדמון (תהליך הפעלה או מעטפת) לקבל הודעות יציאה ולהמשיך בביצוע הרגיל.
  • ניתוק דרך הסעיף המזמין, מבוצע על ידי פעולה בודדת בדרך כלל, setsid():
    • ניתוק דרך ה-tty controlling.
    • יצירת מפגש חדש יותר והפיכתו למנהיג ההפעלה של אותה הפעלה.
    • להיות המנהיג של קבוצת התהליך.
  • אם הדמון רוצה לוודא שהוא לא יורש שליטה ב-tty חדש, הוא עלול לצאת ולהתפצל שוב. זה אומר שזה כבר לא מנהיג הפעלה בתוך ההפעלה החדשה ולא יכול לרשת שום שליטה ב-tty.
  • הגדרת ספריית העבודה הנוכחית כספריית השורש כך שהתהליך לא ייקח שום ספרייה בשימוש שעשויה להיות מעל מערכת קבצים מותקנת.
  • שינוי ה-umask ל-0 כדי לאפשר קריאות create(), open() וקריאות אחרות של מערכת ההפעלה כדי להקל על מסכת ההרשאה שלהם ולא להסתמך על כל ה-umask המתקשר.
  • הפניית מתארי הקבצים 0, 1 ו-2 עבור הזרמים הסטנדרטיים (stderr, stdout, stdin) ל-logfile או /dev/null, וסגירת כל קובץ מתאר אחר שנרכש בתהליך האב.

כאשר התהליך מתחיל על ידי כל דמון שרת-על כמו systemd, launchd או inetd, שרת העל יישם את הפונקציות הללו עבור תהליך זה, למעט אותם דמונים בסגנון ישן שלא הועברו לביצוע תחת systemd ומתוארים כשרתי נתונים גרמיים מסוג multithreaded ו- Type=forking על אינטד.

t ff

MS-DOS

התוכנית דמוית הדמון בוצעה כתוכנת terminate and stay resident (בקיצור TSR) בתוך פלטפורמת Microsoft DOS.

Windows NT

תוכניות הידועות כשירותי Windows מיישמות את הפונקציות של דמונים אלה במערכות Microsoft Windows NT. הם פועלים כתהליכים ולרוב אינם מקיימים אינטראקציה עם העכבר, המקלדת והצג. הם עשויים להיות מופעלים בעזרת מערכת ההפעלה בזמן האתחול.

שירותי Windows נעצרים, מופעלים ומוגדרים באופן ידני על ידי לוח הבקרה (תוכנת תצורה/בקרה ייעודית), מערכת הסקריפטים של PowerShell, או פקודות עצירה נטו ו-net start, רכיב בקר השירות של מנהל בקרת השירות.

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

macOS קלאסי ו-Mac OS

שירותים ומאפיינים אופציונליים שונים הוקלו על ידי אותם קבצים שנטענו בזמן האתחול ובונים מחדש את מערכת ההפעלה ב-Mac OS הקלאסית.

אלה נקראו לוחות בקרה והרחבות מערכת. הגרסאות המאוחרות יותר של Mac OS הרגילות הגדילו את אלה עם יישומי רקע חסרי פנים לחלוטין.

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

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

פונקציות דמונים טיפוסיות

  • בצע פעולות מתוזמנות כמו cron.
  • מעקב אחר מערכות כמו מערך RAID או תקינות הדיסק הקשיח.
  • השב לבקשת הרשת ופתח את יציאת הרשת (כמו יציאה 80).

כיצד אנו מתחילים, מפעילים מחדש או עוצרים דמונים לבקשת מעטפת?

עלינו להחיל את פקודות השירות שלהם כמו להלן:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

בדוגמה הבאה, כוכבים, הפעל מחדש ועצור.

 service httpd start service httpd stop service httpd restart 

כיצד אנו בודקים את הרשימה של כל דמון פועל?

כדי לבדוק את המצב של כל דמון מותקן, הקלד:

 service - -status-all 

תכנון הדמון שלנו

איזה דמון הולך לעשות?

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

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

מיון בחירה

אינטראקציה

אסור לדימון לקיים תקשורת כלשהי עם המשתמש ישירות על ידי מסוף. כל תקשורת עוברת בכמה מיון ממשקים (שאולי נצטרך או לא נצטרך לציין), שיכולים להיות מסובכים כמו GUI+GTK או קל כמו סט בודד.

המבנה הבסיסי של הדמון

Daemon צריך ליישם כמה עבודות בית ברמה נמוכה כדי להכין את עצמה לעבודה האמיתית כשהיא מתחילה. זה כולל כמה שלבים שהם כדלקמן:

  • מזלג תהליך על (תהליך הורה)
  • שנה מסכת של מצב קובץ (umask)
  • פתח יומנים לכתיבה
  • צור מזהה הפעלה מיוחד (בקיצור SID)
  • שנה את ספריית העבודה (הנוכחית) למקום מאובטח
  • סגור מתארי סיווג של קובץ
  • הזן את קוד הדמון המקורי

רשימה של שירותי דמון עבור מערכות דומות ל-Unix ולינוקס

    אנכרון:הוא מריץ פעולות cron מושהות בזמן ההפעלה.amd:זה קיצור של Auto Mount Daemon.וכו:הוא מבצע עבודות בתור תוך החלת הכלי.apmd:זה ראשי תיבות של Advanced Power Management Daemon.עיגול:זהו דמון מתזמן משימות.אוטומטיים:זה עוזר לדמון הרכבה האוטומטי מאפשר ביטול והרכבה של מכשירים על פני דרישה.dhcpd:זה קיצור של Dynamic Host Configuration Protocol. כמו כן, זהו שרת פרוטוקול Bootstrap באינטרנט.cupsd:זה קיצור של CUPS printer daemon.ftpd:זה קיצור של FTP Server Daemon.httpd:זה Daemon של שרת אינטרנט.סגור:זה יכול לנתב את הדמונים שמחליפים egpup ולנתב ולנהל יותר מפרוטוקול ניתוב אחד.lpd:זה קיצור של Line Printer Daemon.imapd:זה הדמון של שרת imap.inetd:זה קיצור של Internet Superserver Daemon.ממך:זהו דמון אחסון אובייקטים מבוזר בתוך הזיכרון.mysql:זהו דמון שרת מסד נתונים.רכוב:זה דמון הר.nfsd:זה קיצור של Network File Sharing Daemon.בשם:זה דמון שרת DNS.nflock:זה מיושם להפעלה ועצירה של שירותי הנעילה של קבצי nfs.ntpd:זה קיצור של Network Time Protocol service daemon.nmbd:זה קיצור של Network Message Block Daemon.postgresql:זהו דמון שרת מסד נתונים.תיקון פוסט:זהו סוכן הובלת דואר ומשמש כתחליף ל-Sendmail.rpcbind:זה קיצור של Remote Procedure Call Bind Daemon.מוּכרָע:הוא מטפל בטבלאות ניתוב.smbd:זה דימון סמבה.שלח מייל:זהו דמון סוכן העברת דואר.smtpd:זה קיצור של Simple Mail Transfer Protocol Daemon.דיונון:זהו דמון שרת פרוקסי למטמון של דפי אינטרנט.snmpd:זה קיצור של Simple Network Management Protocol Daemon.סינכרון:זה יכול לשמור על מערכות קבצים שונות מסונכרנות יחד עם זיכרון המערכת.sshd:זה Secure Shell Server Daemon.syslogd:זה מייצג דמון רישום מערכת.telnetd:זה Daemon של שרת Telnet.tcpd:יש לו מעטפת שירות שיכולה להגביל את ההרשאה לשירותים מבוססי inetd מ-hosts.deny ו-hosts.allow.vsftpd:זה קיצור של Very Secure FTP Daemon.webmin:זהו דמון שרת ניהול מבוסס אינטרנט.xntd:זה דימון שרת זמן ברשת.xinetd:מדובר ב-Enhanced Internet Superserver Daemon.