Ich habe ein C++-Programm, das ich beim Booten auf einer Yocto-Distribution ausführen möchte.
Ich habe versucht, ein einfaches Skript namens test.sh in /etc/init.d/ hinzuzufügen, in dem ich nur Folgendes habe:
echo "start my program"
ProgramName
mit „ProgramName“ läuft mein Programm, wenn ich es auf einer Shell ausführe. Wenn ich dieses neue Skript ausführe, wird mein Programm ausgeführt.
Ich habe es als symbolischen Link zum RC5-Ordner hinzugefügt. Ich habe versucht, neu zu starten, aber nichts passiert. Muss ich noch etwas tun?
Wie kann ich das mit einem Rezept zum Laufen bringen? Letztendlich würde ich das gerne automatisiert haben.
Antwort1
Eine einfache Lösung zum Ausführen eines Programms beim Booten besteht darin, einen Crontab-Eintrag dafür wie folgt zu erstellen:
@reboot /path/to/program
Dies ist normalerweise für Programme ausreichend, die keine Systemdaemons sind.
Das @reboot
Tag stellt sicher, dass das Programm nach dem Systemstart gestartet wird und wird unterstützt aufam meistenCron-Implementierungen:
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Weitere Informationen finden Sie man 5 crontab
auf Ihrem System.
Antwort2
überprüfen Sie bittediese Frage/Antwortfür ähnliche Diskussionen. Und fügen Sie Ihrem Skript eine Überschrift hinzu:
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Sample_GT02 daemon startup script
# Description: Sample Server for GT02 class
### END INIT INFO
Antwort3
Fügen Sie Ihrem Rezept hinzu:
- INITSCRIPT_NAME und fügen Sie den Dateinamen des Initialisierungsskripts hinzu, das Sie in etc/init.d installieren müssen.
- INITSCRIPT_PARAMS und geben Sie den Runlevel Ihres Skripts sowie die Initlevel an, auf denen das Skript ausgeführt werden soll.
Sie können beispielsweise auf die Datei in „poky/meta/recipes-connectivity/connman/connman.inc“ verweisen. Sie sehen das folgende Anwendungsbeispiel.
INITSCRIPT_NAME = "connman"
INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
Im obigen Snippet wird das Connman-Skript unter ect/init.d installiert und das Skript hat einen Runlevel von 05. Das Skript startet auf den Initleveln 2, 3 und 5 und stoppt auf den Leveln 0, 1 und 6.