Raspberry Pi הוא SBC חזק (מחשב לוח יחיד) שתוכלו להשתמש בו ליישומים ופרויקטים שונים. הרבגוניות שלו טמונה ביכולתו להריץ כל מיני תוכניות, כולל סקריפטים מותאמים אישית, בין השאר בזכות מערכת ההפעלה של Raspberry Pi ומערכות הפעלה אחרות מבוססות לינוקס שהיא מריצה.
הפעלת סקריפט או תוכנית ב- Raspberry Pi היא פשוטה כמו למצוא אותה במערכת ולבצע אותה. אבל מה אם אתה רוצה להפוך את התהליך הזה לאוטומטי, אולי בגלל שהפרויקט שלך דורש זאת או בגלל שאתה רוצה לייעל את זרימת העבודה שלך?
תשובה אחת לכך היא ללמוד כיצד להשתמש ב- systemd.
מה זה Systemd?
systemd היא חבילה של רכיבי מערכת לתצורת התנהגות ושירות במערכות לינוקס מודרניות. זה מזוהה עם PID (מזהה תהליך) של 1 מכיוון שזה התהליך הראשון לאתחול בעת אתחול המערכת. ככלל, מטרת systemd היא לעזור לך בניהול וביצוע של תוכניות בעת אתחול המערכת. וזה מה שתנצל להפעלת התוכנית שלך בעת ההפעלה ב- Pi.
כפי שהוזכר בתחילה, ישנן מספר שיטות להפעלת תוכניות בהפעלה במערכות לינוקס, כגון rc.local, cron ו- autostart. עם זאת, systemd קורה לפיתרון טוב יותר של המגרש אם ברצונך להפעיל תוכניות GUI (ממשק משתמש גרפי), הפעל יישומים אוטומטיים לאחר שהתחילו תהליכי מערכת מסוימים, או הפעל תוכניות שוב ושוב עד לתזמון שלך עובד.
קָשׁוּר: כיצד לתזמן משימות בלינוקס באמצעות Cron ו- Crontab
כיצד להשתמש ב- systemd להפעלת תוכניות בהפעלה
systemd היא שיטה קצת יותר מסובכת להפעלת תוכניות בעת ההפעלה במערכות לינוקס. עם זאת, גמישות התזמון שהיא מציעה על פני שיטות אחרות - אלה שהזכרנו לעיל - גוברת לחלוטין על מורכבותה בכל היבט.
שיטת systemd משתמשת בקבצי יחידות, שהם סוג של קבצי .ini המכילים מידע קידוד על מכשירים, שירותים, שקעים, יעד התחלה ורכיבי מערכת חיוניים אחרים.
קבצי יחידות הם מסוגים שונים. לכן, על סמך סוג המשאב שאתה רוצה להצהיר עליו, עליך לבחור סוג קובץ יחידה בהתאם. לצורך מדריך זה, עם זאת, אנו נצמד לקבצי יחידת שירות. המאפשרים לך לנהל את התנהגות ההפעלה של תוכניות וסקריפטים במערכת.
להלן פירוט השלבים הכרוכים בהשקת סקריפט / תוכנית בעת ההפעלה באמצעות מערכת d.
יצירת שירות
כדי להגדיר שהתוכנית שלך תפעל בעת ההפעלה, צור קובץ יחידת שירות שיגיד למערכת איזו תוכנית להפעיל ומתי. כך תעשה זאת.
- בחלון CLI, הקלד sudo nano /lib/systemd/system/display.service. אתה יכול להשתמש בכל שם עבור השירות שלך כל עוד הוא מסתיים בתוסף .service.
- בקובץ השירות, הדבק את שורות הקוד הבאות:
[יחידה]
תיאור = PiCounter
אחרי = network.target
[שֵׁרוּת]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
הפעל מחדש = תמיד
משתמש = pi
[להתקין]
WantedBy = multi-user.target
כל אפשרויות התצורה הנפוצות שלך נופלות תחת יחידה ו להתקין חלקים, ואילו אפשרויות התצורה הספציפיות לשירות עוברות למקטע שירות.
כמה מהזוגות הנ"ל של ערך ההנחיה שתצטרך לשנות כוללים:
אני. לאחר: זה קובע מתי להתחיל את השירות. מגדיר את זה ל network.target מבטיח שהערך הרשום - network.target במקרה זה - מתחיל לפני תחילת היחידה הנוכחית. עם זאת, הוא אינו מכוון את יחסי התלות להפעלת השירות; זה נעשה באמצעות הנחיות אחרות כגון Wants, Requires ו- WantedBy.
כמובן, תוכלו לשנות ערך זה כך שיתאים לדרישות הפרויקט שלכם. לדוגמא, אם אתה רוצה שהתוכנית שלך תבוצע לאחר שה- Raspberry Pi שלך מתחבר לרשת, אתה יכול להשתמש ב- network-online.target ערך. אתה יכול להתייחס ל תיעוד פדורה על מערכת כדי ללמוד עוד על ערכים אלה.
ii. ExecStart: הוא מחזיק את הנתיב המוחלט ואת שם התוכנית / סקריפט שברצונך לבצע בעת ההפעלה. אז תלוי מה ברצונך לבצע, עליך להוסיף ערכים עבור שתי ההוראות הללו.
iii. מִשׁתַמֵשׁ: זה מזהה את שם ה- Raspberry Pi שלך. אם שינית את שם ה- Pi שלך, עליך לשים ערך זה למשתמש.
iv. WantedBy: זוהי הדרך הנפוצה ביותר לציין את ההדק ליחידה. על ידי הגדרת אותו ל multi-user.target, באפשרותך ליצור קשר תלות שיפעיל את התוכנית כאשר בקרת המערכת תועבר למעטפת המשתמשים המרובים.
יתר על כן, זה גם מריץ את התוכנית שלך לפני שמתחילה מערכת X-Windows של Pi, מה שאומר שהתוכנית שלך פועלת עוד לפני שאתה מתחבר למערכת. במקרה שאתה רוצה שסקריפט יופעל לפני שתתחבר ל- Raspberry Pi שלך, זה מאפשר לך לעשות זאת.
שורות הקוד שלעיל עובדות עבור תוכניות שאינן GUI. עם זאת, אם ברצונך להפעיל תוכנית GUI באמצעות systemd, עליך להוסיף את הקוד הבא לקובץ השירות שלך:
[יחידה]
תיאור = PiCounter
אחרי = network.target
[שֵׁרוּת]
סביבה = תצוגה =: 0
סביבה = XAUTHORITY / בית / pi / .X רשות
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
הפעל מחדש = תמיד
[להתקין]
WantedBy = multi-user.target
בצמד הנחיה-ערך הנ"ל, כל מה שאתה צריך לשנות הוא הערך עבור ה- ExecStart הוֹרָאָה. החלף את התוכנה שבמפתח הקוד בתוכנית שברצונך להפעיל בעת ההפעלה. לאחר שאכלסת את קובץ השירות, לחץ CTRL + O כדי להציל אותו.
בדוק את השירות
כשהשירות מוכן, ודא ידנית אם הוא עובד. לשם כך הקלד את הפקודה הבאה במסוף: התחל להציג. שירות. על השירות לבצע את הוראותיך בהצלחה.
ברגע שזה קורה, סיים אותו עם להפסיק את תצוגת השירות.
אפשר את השירות
אם הצלחת להפעיל את התוכנית שלך בהצלחה באמצעות השירות, הגיע הזמן לאפשר זאת כך שהיא מבצעת את התוכנית שלך באופן אוטומטי בכל פעם שאתה מאתחל את ה- Raspberry Pi שלך.
לשם כך הקלד sudo systemctl לאפשר display.service בחלון המסוף. וברגע שזה נגמר, היכנס אתחול סודו כדי להפעיל מחדש את ה- Pi שלך.
ברגע ש- Raspberry Pi שלך יתחיל, systemd צריך להפעיל את התוכנית שלך בהתאם להוראות שלך.
הפעלת תוכנית אוטומציה בהפעלה ב- Raspberry Pi
כמו רוב מערכות לינוקס, מערכת ההפעלה של פטל גם מאפשרת לבצע פעולות בכמה דרכים, וזה נשאר נכון גם לתזמון השקת תכניות. לכן, אם ברצונך להפעיל תוכניות / סקריפטים של GUI בעת ההפעלה וברצונך לשלוט טוב יותר בתזמון שלך, ברור ש- systemd היא שיטה טובה יותר.
עם זאת, אם אתה רוצה פיתרון פשוט יותר או שדרישות הפרויקט שלך דורשות תזמון ספציפי, אתה יכול לבדוק את המדריך שלנו ל מריץ תוכנית או סקריפט של פטל ללמוד 'יותר.
רוצה לקבל יותר מפי פטל שלך? להלן המון פקודות מועילות לנווט במסוף ה- Pi ולתכנת את סיכות ה- GPIO שלו.
קרא הבא
- DIY
- פאי פטל
יאש הוא סופר צוות ב- MUO עבור DIY, Linux, תכנות ואבטחה. לפני שמצא את התשוקה שלו בכתיבה, הוא נהג להתפתח לאינטרנט ול- iOS. אתה יכול למצוא את כתיבתו גם ב- TechPP, שם הוא מכסה אנכיים אחרים. פרט לטכנולוגיה, הוא נהנה לדבר על אסטרונומיה, פורמולה 1 ושעונים.
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
צעד אחד נוסף !!!
אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.