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

bpytop > /dev/console


ככה יציג על המסך שלו דברים מגניבים (בהחלט שטות, אל תשפטו אותי). החלטתי לעשות system service שיטפלבזה:

[Unit]
Description="Run bpytop on console"

[Service]
Type=oneshot
ExecStart=/bin/open /bin/bash /usr/local/bin/banner.sh
TimeoutStartSec=1m

[Install]
WantedBy=network-online.target


זאת השגיאה שאני רואה:
קוד

pie@raspberrypi:~ $ sudo systemctl status-banner.service
● banner.service - "Run bpytop on console"
     Loaded: loaded (/etc/systemd/system/banner.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-12-06 21:36:35 GMT; 3min 20s ago
    Process: 401 ExecStart=/bin/open /bin/bash /usr/local/bin/banner.sh (code=exited, status=3)
   Main PID: 401 (code=exited, status=3)
        CPU: 546ms

Dec 06 21:36:33 raspberrypi systemd[1]: Starting "Run bpytop on console"...
Dec 06 21:36:35 raspberrypi open[401]: Error: no "view" mailcap rules found for type "application/x-pie-executable"
Dec 06 21:36:35 raspberrypi open[401]: Error: no "view" mailcap rules found for type "application/x-sh"
Dec 06 21:36:35 raspberrypi systemd[1]: infiniplex-banner.service: Main process exited, code=exited, status=3/NOTIMPLEMENTED
Dec 06 21:36:35 raspberrypi systemd[1]: infiniplex-banner.service: Failed with result 'exit-code'.
Dec 06 21:36:35 raspberrypi systemd[1]: Failed to start "Run bpytop on console".


והתוכן של התסריט המדובר הוא:
קוד

pie@raspberrypi:~ $ cat /usr/local/bin/banner.sh
#! /bin/sh

bpytop --boxes "net cpu mem" > /dev/console


למישהו יש רעיון איך לטפל בזה?


נערך לאחרונה על-ידי elcuco בתאריך 07/12/2022 - 06:38, סך-הכל נערך פעם אחת
 
אורח‏
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד
/bin/sh

להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).
 
elcuco‏
Anonymous:
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד
/bin/sh

להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).


בדיוק מה שחשבתי - אין לי מסוף זמין באותו שלב. בגלל זה ניסיתי את open ואת ‏/usr/bin/open וגם screen. כולם נותנים את אותה תוצאה - קריא לא עובד.

אני גם חושד, שהשירות מתחיל מהר מדי (אני רואה את ההודעה לפני ש-login מתחיל - ואני ביקשתי שיופעל דקה לאחר הפעלת רשת).
 
אורח‏
elcuco:
Anonymous:
אתה משתמש ב open שאומר כי יש לך בעיה עם חוק mailcap

הייתי משתמש במשהו כמו

קוד
/bin/sh

להריץ, ולראות את ההתנהגות, אולי זה יפתור את הבעיה (בנוסף לכך שהוא לא יודע לפתוח קבצי sh).


בדיוק מה שחשבתי - אין לי מסוף זמין באותו שלב. בגלל זה ניסיתי את open ואת ‏/usr/bin/open וגם screen. כולם נותנים את אותה תוצאה - קריא לא עובד.

אני גם חושד, שהשירות מתחיל מהר מדי (אני רואה את ההודעה לפני ש-login מתחיל - ואני ביקשתי שיופעל דקה לאחר הפעלת רשת).


אז חסר לך hook של

קוד
after=networking.service

וכנראה אולי עוד הגדרה בנושא של ה login (לא מכיר בעל פה, צריך לבדוק בתיעוד של systemd).
 
צפריר‏ אורח
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?
 
elcuco‏
צפריר:
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?


אני רוצה להציג "bpytop" אחרי שקיבלתי ip. במיקרים כאלו - אני יכול לגשת למכונה מרוחוק (אני יודע מה ה-ip). במצב שאין חיבור רשת - אזי במסוף אני אקבל את login.
 
אורח‏
elcuco:
צפריר:
לא לגמרי ברור לי אם בשלב הזה מובטח שיהיה חיבור רשת. מתי צריך להריץ את זה? כשיש חיבור רשת בזמן העליה? כל פעם שמתעדכן חיבור הרשת?


אני רוצה להציג "bpytop" אחרי שקיבלתי ip. במיקרים כאלו - אני יכול לגשת למכונה מרוחוק (אני יודע מה ה-ip). במצב שאין חיבור רשת - אזי במסוף אני אקבל את login.


אז hook נוסף ל after הוא:

קוד
require=networking

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

/bin/openvt -c 2 --  /bin/bash /usr/local/bin/banner.sh


אבל במחשבה שניה, אם אתה מריץ מתוך systemd אתה יכול לבקש ממנו לטפל בפרטים הללו, כמו שנעשה ב:
/lib/systemd/system/getty@.service
 
כל הזמנים הם GMT + 2 שעות
   
PNphpBB2 © 2003-2004