Wie starte ich einen Dienst beim Start auf einem Debian-Headless-Server (Raspberry Pi)?

0

Ich möchte aria2 als Daemon beim Start auf einem Raspberry Pi-Headless-Server starten (keine GUI, nur SSH-Zugriff)

Ich habe ein erstellt Dienst aria2cRPC Damit startet die Anwendung (Hilfe erhalten von: http://www.megaleecher.net/Raspberry_Pi_Autostart ) Es startet die App so:

sudo aria2c --daemon --enable-rpc --rpc-listen-all

Wenn ich den Dienst über die SSH-Konsole starte

sudo service aria2cRPC start

Everythink funktioniert wie erwartet.

Wenn ich jedoch den Dienst beim Start zum automatischen Start hinzufüge, wird er nicht gestartet.

sudo update-rc.d aria2cRPC defaults

Soll ich den Runlevel wechseln? Welches Level sollte ich verwenden? Wie kann ich testen, dass der Dienst zumindest versucht, beim Booten zu starten?

EDIT: Wenn ich nachsehe /etc/rcX.d Ich kann meinen Dienst sehen bei:

/etc/rc0.d K01aria2cRPC
/etc/rc1.d K01aria2cRPC
/etc/rc2.d S01aria2cRPC
/etc/rc3.d S01aria2cRPC
/etc/rc4.d S01aria2cRPC
/etc/rc5.d S01aria2cRPC
/etc/rc6.d K01aria2cRPC

Bedeutet dies, dass der Dienst ausgeführt werden soll, wenn er ohne X gestartet wird (Laufstufe 2,3,4)?

Joudicek Jouda
quelle

Antworten:

3

Ich glaube, dass der Standard-Runlevel für den Raspberry Pi 2 ist, also sollten die Standardeinstellungen OK sein. Sie können überprüfen, ob dies tatsächlich der Fall ist, indem Sie aufrufen who -r.

Die von Ihnen verwendete Sequenznummer ( 01 ) ist ziemlich niedrig. Dies kann Grund genug sein, damit der Dienst nicht startet, wenn er von anderen Diensten mit höheren Sequenznummern abhängt. Ich schlage vor, Sie versuchen es erneut mit einem höheren, z.

sudo update-rc.d aria2cRPC defaults 99

nach dem Entfernen der Links.

Soll ich den Runlevel wechseln? Welches Level sollte ich verwenden?

Sie müssen Ihren Run-Level nicht ändern, es sei denn, Sie haben andere Gründe dafür.

Wie kann ich testen, dass der Dienst zumindest versucht, beim Booten zu starten?

Sie können eine Zeile wie die folgende hinzufügen /etc/init.d/aria2cRPC Skript:

echo "`/bin/date` $1" >> /var/tmp/aria-rc.log

Dadurch werden alle Ihre Skriptaufrufe protokolliert. ( $1 wird der erste Parameter des Skripts sein, start oder stop ).

nickie
quelle
Ok, also habe ich mit gecheckt runlevel und es ist Stufe 2. Ich habe die Datei in umbenannt /etc/rc2.d S90aria2cRPC (mit mv ). Ich dachte, vielleicht gibt es ein Problem beim Laufen sudo im Shellskript habe ich am Ende eine Zeile eingefügt sudo visudo: pi ALL=(ALL) NOPASSWD: /usr/bin/aria2c Aber es hilft nichts ... andere Ideen?
Joudicek Jouda
Natürlich haben Sie überprüft, dass das Ziel Ihrer Links (Ihre /etc/init.d/aria2cRPC Skript) ist im Besitz von root:root und hat Berechtigungen 755.
nickie
Ich habe das hinzugefügt echo Zeile neben der aria2c-Zeile und das Skript startet beim Booten. Das Problem muss also beim Aufruf der Anwendung liegen. Das Skript gehört root und hat die Berechtigung 777. Ist es in Ordnung? Was ist mit der Anwendung (auch root und 755) - sollte ich den Besitz oder die Berechtigungen ändern?
Joudicek Jouda
Es kann nicht die Ursache des Problems sein, aber Sie sollten die Berechtigungen korrigieren. Sie müssen Ihr Skript debuggen, und ich glaube nicht, dass ich viel helfen kann, ohne meine Hände darauf legen zu können.
nickie
OK, wie soll ich das reparieren? Ich meine, ich habe kein Problem damit, Befehle zu googeln, aber ich weiß nicht, was ich einstellen soll. Wie 755 für jede Datei / jedes Skript? Sollten sich alle im Besitz von Benutzer pi befinden? Das Skript ist das gleiche wie das Skript in Schritt 3: megaleecher.net/Raspberry_Pi_Autostart Aber die Zeile, die die Anwendung startet (nohup ...), ist wie die in meiner Frage - ich habe sie geändert, weil die Zeile den aria2c-Dämon nicht einmal von SSH aus gestartet hat.
Joudicek Jouda
1

Die Lösung besteht darin, eine leere Textdatei zu erstellen, deren Pfad in aria2 config angegeben ist: Eingabedatei .

Aria2 kann die Situation nicht verarbeiten, wenn ein Dateipfad angegeben wurde, der aber nicht vorhanden ist. Also geht es nicht los. Aber es wird auch kein Fehler angezeigt, was ziemlich kompliziert ist.

Joudicek Jouda
quelle