Ein Programm beim Booten starten lassen

Ein Programm beim Booten starten lassen

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 @rebootTag 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 crontabauf 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.

verwandte Informationen