כיצד להפעיל תוכנית לינוקס בהפעלה עם systemd

חלון מסוף מסוגנן במחשב נייד.

Fatmawati Achmad Zaenuri/Shutterstock



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

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





הפעלת תוכניות בעת ההפעלה

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

התוכניות המופעלות בעת ההפעלה נשלטות על ידי |_+_|, ה מערכת ושירות מנהל. |_+_| הוא התהליך הראשון שפועל בעת ההפעלה. זה תמיד קרה מזהה תהליך (PID) 1. כל תהליך אחר הפועל במחשב שלך מופעל על ידי |_+_|, או על ידי תהליך ש-|_+_| כבר התחיל.



תוכניות הפועלות ברקע נקראות דמונים או שירותים. ה-d בסוף |_+_| מייצג דמון. במאמר זה, ניצור שירות לדוגמה. כדי לסמן את כל התיבות, השירות שלנו חייב להיות:

  • משולב עם |_+_| באמצעות קובץ יחידת שירות
  • הושק בעת ההפעלה
  • ניתן לשליטה באמצעות |_+_|, ה ממשק שליטה עבור |_+_|
  • מסוגל לכתוב ליומן

יצירת תוכנית השירות

אנחנו צריכים שתהיה לנו תוכנית ש |_+_| יושק. אנו ניצור סקריפט פשוט, הנקרא htg.sh. מדריך זה משתמש בעורך הטקסט של Gedit, אך אתה יכול להשתמש בכל עורך טקסט שאתה מעדיף.

systemd systemd



פרסומת

ה- |_+_| עורך ייפתח. העתק והדבק את הטקסט הבא לתוך העורך.

systemd

שמור את השינויים שלך וסגור את העורך.

סקריפט htg.sh בעורך gedit

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

  • השניים |_+_| קווים עוברים דרך |_+_|, תוכנית שלוקחת את פלט מתוכנה ושולח אותו ליומן . ערכים ליומן מקבלים עדיפות. אנו משתמשים ב-|_+_| אפשרות (עדיפות) לציין שההודעות שלנו הן למידע (מידע) בלבד. הם לא שגיאות או אזהרות חשובות.
  • יש |_+_| אינסופי לוּלָאָה.
  • ה- |_+_| המשתנה מוגדר לתאריך ולשעה הנוכחיים. זה מעוצב להודעה ונשלח ליומן.
  • לאחר מכן, התסריט ישן למשך 60 שניות.
  • לאחר 60 שניות הלולאה חוזרת על עצמה. אז, התסריט הזה כותב הודעה עם חותמת זמן ליומן פעם בדקה.

אנו נעתיק את הסקריפט אל |_+_| מַדרִיך.

systemd

ואנחנו צריכים להפוך את זה לניתן להפעלה:

systemd

יצירת קובץ יחידת השירות

כל תוכנית שמתחילה על ידי |_+_| יש קובץ הגדרות, הנקרא קובץ יחידת שירות. זה מכיל תכונות מסוימות ש-|_+_| יכול להשתמש כדי לאתר ולהפעיל את התוכנית, וכדי להגדיר חלק מההתנהגות שלה.

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

systemd

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

פרסומת

השירות שלנו הולך להיקרא htg.service. לאף קבצי יחידה יש ​​את השם הזה, אז אנחנו יכולים להמשיך וליצור את קובץ היחידה שלנו.

systemctl

ה- |_+_| עורך ייפתח. העתק והדבק את הטקסט הבא בעורך:

systemd

שמור את השינויים שלך וסגור את העורך.

קובץ יחידת htg.service בעורך gedit

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

    תיאור:זהו תיאור טקסט של השירות שלך. רוצה:השירות שלנו רוצה - אבל לא מחייב - שהרשת תהיה פתוחה לפני שהשירות שלנו יתחיל. לאחר:רשימה של שמות יחידות שיש להפעיל לאחר שהשירות הזה הופעל בהצלחה, אם הם עדיין לא פועלים. סוּג:פָּשׁוּט. |_+_| ישקול שירות זה התחיל ברגע שהתהליך שצוין על ידי |_+_| התפצל. ExecStart:הדרך לתהליך שצריך להתחיל. אתחול:מתי ואם יש להפעיל מחדש את השירות. הגדרנו אותו למצב כשל. RestartSec:כמה זמן לחכות לפני ניסיון להפעיל מחדש את השירות. ערך זה הוא בשניות. KillMode:מגדיר כיצד |_+_| צריך להרוג את התהליך אם נבקש |_+_| להפסיק את השירות. יש לנו את הסט הזה לעיבוד. זה גורם |_+_| להשתמש ב-|_+_| אות על התהליך הראשי בלבד. אם השירות שלנו היה תוכנית לא טריוויאלית במקום סקריפט פשוט, היינו מגדירים את זה למעורב כדי להבטיח שכל התהליכים שהורדו גם יופסקו. מבוקש על ידי:יש לנו הגדרה זו ל-multi-user.target, מה שאומר שהשירות צריך להיות מופעל כל עוד המערכת נמצאת במצב שבו משתמשים מרובים יכולים להיכנס, בין אם ממשק משתמש גרפי זמין ובין אם לאו.

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

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

systemd

אנחנו יכולים לקבל |_+_| בדוק עבורנו את התחביר של קובץ היחידה שלנו, גם אם השירות עדיין לא פועל. כל שגיאה תדווח. (למעשה, החלק ‎.service הוא אופציונלי עבור רוב הפקודות.)

gedit

פרסומת

אין שגיאות מסומנות, מה שאומר שקובץ היחידה שלנו תקין מבחינה תחבירית.

התחלת השירות

כאשר אתה מוסיף קובץ יחידה חדש או עורך קובץ קיים, עליך לומר |_+_| כדי לטעון מחדש את הגדרות קובץ היחידה.

echo

אם אתה רוצה ששירות יושק בעת ההפעלה, אתה חייב לְאַפשֵׁר זה:

systemd-cat

הפעלת שירות לא מפעילה אותו, אלא רק מגדירה אותו להפעלה בזמן האתחול. כדי להתחיל את השירות עַכשָׁיו , עליך להשתמש |_+_| עם ה- |_+_| אוֹפְּצִיָה.

-p

אימות השירות

לאחר הפעלה ידנית של השירות או לאחר אתחול המחשב, נוכל לוודא שהשירות שלנו פועל כהלכה.

while

סטטוס השירות מוצג עבורנו.

סטטוס של htg.service ב-widnow מסוף

  • הנקודה הירוקה פירושה שהשירות שלנו פועל בצורה חלקה.
  • שם השירות הוא htg.service, והתיאור הארוך הוא זה שסיפקנו בקובץ היחידה.
  • נראה איזה קובץ יחידה נטען /etc/systemd/system/htg.service.
  • השירות פעיל, ומועד השקת השירות רשום עבורנו.
  • ה-PID שלו הוא 7762.
  • ישנן שתי משימות הקשורות לשירות.
  • סך הכל 928 קיביבייט של זיכרון נמצאים בשימוש על ידי השירות.
  • קבוצת הבקרה כוללת את הסקריפט htg.sh ואת ה- |_+_| הפקודה, אשר הושקה על ידי htg.sh. רוב הזמן, ה- |_+_| command תעשה את העבודה עבור שירות זה.

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

עצירה והשבתה של השירות

אם אתה צריך להפסיק את השירות, אתה יכול לעשות זאת עם הפקודה הזו:

TIMESTAMP

פרסומת

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

/usr/local/bin

אם השירות פועל, פקודה זו לא עוצרת אותו. זה פשוט אומר |_+_| לא להפעיל את השירות באתחול הבא.

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

טיפ שירות

ודא שהתוכנית שלך פועלת כצפוי לפני שאתה מנסה להפעיל אותה כשירות.

פקודות לינוקס
קבצים זֶפֶת · pv · חתול · טק · chmod · אחיזה · הבדל · sed · עם · איש · דחף · popd · fsck · testdisk · seq · fd · פנדוק · CD · $PATH · מביך · לְהִצְטַרֵף · jq · לְקַפֵּל · ייחודי · journalctl · זָנָב · מדינה · ls · fstab · זרק · פָּחוּת · chgrp · chown · לְהַאִיץ · תראה · מחרוזות · סוּג · לשנות שם · רוכסן · לִפְתוֹחַ · הר · umount · להתקין · fdisk · mkfs · rm · rmdir · rsync · df · gpg · אָנוּ · ננו · mkdir · מ · ב · תיקון · להמיר · rclone · שמץ · SRM
תהליכים כינוי · מָסָך · חלק עליון · נֶחְמָד · נחמדים · התקדמות · רצועה · מערכת · tmux · chsh · הִיסטוֹרִיָה · בְּ- · קבוצה · חינם · איזה · dmesg · usermod · נ.ב · chroot · xargs · tty · זרת · lsof · vmstat · פסק זמן · קִיר · כן · לַהֲרוֹג · לִישׁוֹן · סודו · שֶׁלוֹ · זְמַן · הוספה קבוצתית · usermod · קבוצות · לשוו · לכבות · לְאַתחֵל · תפסיק · כיבוי · passwd · lscpu · crontab · תַאֲרִיך · bg · fg
רשת netstat · פינג · traceroute · ip · ss · מי זה · fail2ban · bmon · אתה · אֶצבַּע · nmap · ftp · סִלְסוּל · wget · מי · מי אני · ב · iptables · ssh-keygen · ufw

קָשׁוּר: מחשבי Linux הטובים ביותר למפתחים וחובבי

קרא את הבא תמונת פרופיל עבור דייב מקיי דייב מקיי
דייב מקיי השתמש לראשונה במחשבים כשסרט נייר מחורר היה באופנה, ומאז הוא מתכנת. לאחר למעלה מ-30 שנה בתעשיית ה-IT, הוא כעת עיתונאי טכנולוגיה במשרה מלאה. במהלך הקריירה שלו, הוא עבד כמתכנת עצמאי, מנהל צוות פיתוח תוכנה בינלאומי, מנהל פרויקטים של שירותי IT, ולאחרונה כמנהל הגנת מידע. הכתיבה שלו פורסמה על ידי howtogeek.com, cloudsavvyit.com, itenterpriser.com ו-opensource.com. דייב הוא אוונגליסט של לינוקס ותומך בקוד פתוח.
קרא את הביוגרפיה המלאה

מאמרים מעניינים