Ubuntu Linux -- Wie starte ich Bitcoin als Dienst, damit es automatisch ausgeführt wird?

Ich habe eine Reihe anderer Dienste so eingerichtet, dass sie automatisch starten, wenn mein Ubuntu-Server startet (Dienste wie wicd-daemon und VPN), aber ich kann nicht herausfinden, wie ich den Bitcoin-Daemon (bitcoind) so einrichten kann, dass er automatisch startet wann das System fährt hoch. (Dies ist auf einem Headless-System ohne GUI oder angeschlossenem Monitor.)

Ich versuche zu lernen, wie man Bitcoin in Python integriert, damit ich Bitcoin-fähige Dienste schreiben kann, aber ich möchte, dass das System Bitcoin automatisch startet, wenn das System hochfährt, damit ich es nicht manuell tun muss. (Es ist ein Ärgernis, einen ganzen Haufen Blockchain auf einmal herunterladen zu müssen. Es frisst die Betriebszeit.)

Wenn diese Frage bereits gestellt wurde, leiten Sie mich bitte zur Antwort weiter. Ich habe gesucht, aber nicht gefunden. Ansonsten helfen Sie mir bitte, das herauszufinden!

Vielen Dank.

siehe dieses Verzeichnis: github.com/bitcoin/bitcoin/tree/master/contrib/init es hat Startskripte für viele Init-Systeme

Antworten (6)

BEARBEITEN : Vorsichtsmaßnahme bei Ubuntu-Distributionen ab 14.10 und höher – initwurde gewählt upstartund wird in Zukunft schrittweise eingeführt . Ich weiß nicht, wann das geschehen wird und welche Auswirkungen es auf Upstart-Skripte haben wird.

Auszug aus der Seite RentFree bezieht sich auf ; Beachten Sie, dass davon ausgegangen wird, dass Sie einen Benutzer erstellt haben, bitcoinuserder aus Sicherheitsgründen aufgerufen wird:

Diejenigen, die Ubuntu verwenden, sind vielleicht mit upstart vertraut , einem Ersatz für sysvinitstyle booting ( /etc/init.d/*).

Konfigurationsdateien für Upstart werden unter gespeichert /etc/init/*.conf. Ich habe das folgende für Bitcoin geschrieben:

description "bitcoind"

start on filesystem
stop on runlevel [!2345]
oom score -500
expect fork
respawn
respawn limit 10 60 # 10 times in 60 seconds

script
user=bitcoinuser
home=/home/$user
cmd=$home/bin/bitcoind
pidfile=$home/bitcoind.pid
# Don't change anything below here unless you know what you're doing
[[ -e $pidfile && ! -d "/proc/$(cat $pidfile)" ]] && rm $pidfile
[[ -e $pidfile && "$(cat /proc/$(cat $pidfile)/cmdline)" != $cmd* ]] && rm $pidfile
exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b -m
end script

Fügen Sie die obige Konfiguration ein /etc/init/bitcoind.confund führen Sie sie aus sudo initctl reload-configuration. Zum Starten bitcoindlaufen sudo start bitcoind. Anhalten bitcoind, laufen sudo stop bitcoind.

Wahrscheinlich möchten Sie user , cmd und pidfile in etwas ändern, das Ihrer Konfiguration entspricht, oder Sie können Folgendes als Vorlage verwenden:

/home/bitcoinuser
/home/bitcoinuser/bitcoind.pid
/home/bitcoinuser/bin/bitcoind

Ein Benutzer schlägt jedoch die folgende Korrektur der Konfiguration vor:

home=/home/$user
cmd=/usr/bin/bitcoind
pidfile=$home/.bitcoin/bitcoind.pid

und ein anderer schlägt eine Einstellung nicefür den Prozess vor, damit die CPU nicht belastet wird

exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b --nicelevel 15 -m
Obwohl dies funktioniert, zeigt das Upstart-Protokoll einige Zeilen wie diese: /proc/self/fd/9: 9: /proc/self/fd/9: [[: not found. Was ist das?
Wenn Sie Ubuntu verwenden, versuchen Sie es mit pastebinit -i /etc/init/bitcoind.conf, wodurch eine URL mit der auf eine öffentlich zugängliche Seite kopierten Konfiguration ausgegeben wird. Überprüfen Sie die URL noch einmal, um sicherzustellen, dass nichts Privates darin ist, und fügen Sie dann die URL hier ein.
Woah, wusste nicht, dass pastebinites existiert, cool! Hier geht es: paste.ubuntu.com/6691665 , aber es ist ziemlich viel Kopieren und Einfügen von hier.
Ich sehe nicht wirklich etwas, das Probleme verursachen sollte, aber ich habe nicht viel Zeit mit init.d/upstart verbracht - hier ist meins als Referenz, wo ich es so eingestellt habe, dass es sich protokolliert und in seiner Ausgabe expliziter ist . Beachten Sie, dass ich bitcoinuserals dedizierter Benutzer verwende. Eine Randbemerkung pastebinitdazu: Sie können auch für die Befehlsausgabe dorthin leiten - mehr Informationen hier .
Diese Antwort ist fast richtig. Sie sollten expect daemonzu expect forkund oom neverzu wechseln oom score -500. Weitere Einzelheiten finden Sie unter: stackoverflow.com/a/25731881/1157309
@c.hill, Sie können die Antworten hier bearbeiten :-) - Ich habe wie vorgeschlagen geändert

Es gibt ein Upstart-Skript für Ubuntu im Quellbaum von Bitcoin Core. Das zu verwenden ist der richtigste Weg.

Ich melde mich jedoch einfach mit dem Benutzerkonto an, mit dem ich den Bitcoin Core-Daemon ausführen möchte, starte ein Terminal (wenn ich mich in der GUI befinde) und führe den folgenden Befehl aus, um meine Crontab zu bearbeiten:

crontab -e

Dann füge ich folgende Zeile hinzu:

@reboot bitcoind -daemon

Speichern Sie die Datei und beenden Sie sie. Jetzt wird bei jedem Hochfahren des Computers der Bitcoin Core-Daemon gestartet. Beim Herunterfahren sendet init/upstart/systemd/whatever ein SIGTERM-Signal, das Bitcoin abfängt und als Befehl zum Starten eines sicheren Herunterfahrens interpretiert.

aber Upstart wird von Ubuntu nicht mehr verwendet, oder?
ja was bedeutet das?

Ich lande schließlich mit dieser Einstellung für meine Himbeere

nano /etc/systemd/system/bitcoind.service

Inhalt der Dateibitcoind.service

[Unit]
Description=bitcoin
After=network.target

[Service]
Type=forking
User=pi
Group=pi

Environment=BITCOIN_PID=/home/pi/.bitcoin/bitcoin.pid
Environment=BITCOIN_HOME=/home/pi/.bitcoin

ExecStart=/usr/local/bin/bitcoind
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

Systemctl-Daemon neu laden

systemctl daemon-reload

Neuer Bitcoin-Dienst aktiviert

systemctl enable bitcoind

Befehle zum Starten oder Stoppen des Dienstes

systemctl stop bitcoind
systemctl start bitcoind

Dienststatus anzeigen

systemctl status bitcoind.service  

Weitere Informationen unter https://github.com/bitcoin/bitcoin/tree/master/contrib/init

Danke für die Hilfe Janus Troelsen

Aktualisieren

Geben Sie keine Argumente an, da ich in Betracht gezogen habe, dass eine Konfiguration vorhanden ist

/home/pi/.bitcoin/bitcoin.conf
schön, aber du hast ein d: verpasst /etc/systemd/system/bitcoind.service.
Alles gut, außer Sie wollenType=simple

Ich bin noch nie damit gefahren. Sie sagten, dass Bitcoin ein Daemon ist, also hier, wie man einen Daemon so konfiguriert, dass er beim Start ausgeführt wird:

Normalerweise hat ein Daemon sein Init-Skript im /etc/init.d/Verzeichnis.

sudo /etc/init.d/bitcoind start

Wenn der Daemon beim Start initialisiert werden muss, wird er in /etc/rc0.d/or /etc/rc1.d/or ... /etc/rc6.d/... usw. eingebunden

0 -> 6 sind Runlevel:

0 - Halt
1 - Single User Mode
2 - Multiuser
3 - Full Multiuser Mode
4 - unused
5 - Full Multiuser Mode with x11
6 - Reboot

Sie können auch das Skript hinzufügen, in dem Ihr Daemon ausgeführt wird

/etc/rc.local

Wenn es sich um ein Python-Skript handelt, können Sie in diese Datei schreiben:

python /directory/to/init/script/bitcoind.py

Eine andere Alternative ist die Ausführung von update-rc.d:

sudo update-rc.d bitcoind defaults

defaults, weist update-rc.dan, eine Standardkonfiguration auszuführen, wenn es um runlevel geht. Sie können Ihren Runlevel ändern, dies ist ein Beispiel:

update-rc.d bitcoind start 20 2 3 4 5 . stop 20 0 1 6

laufen man update-rc.d, es gibt andere Beispiele .

Um es vom Start zu entfernen, führen Sie Folgendes aus:

sudo update-rc.d bitcoind remove
Ich glaube, ich bitcoindhabe mit Ihrem letzten Befehl aus meinem Startup entfernt. Jetzt scheint es, als hätte ich Probleme, es wieder zu aktivieren. Mein Bitcoin hatte ein spezielles Arbeitsverzeichnis. Ich vermute, dass das Startskript dieses Verzeichnis enthielt. Habe ich die Datei physisch von /etc/rc.localoder /etc/initmit diesem Befehl entfernt? Weil ich dort keine Datei mehr habe, die sich auf bitcoind.
Ah, ich habe eine, bitcoin.servicein /etc/systemd/system/der der richtige Pfad enthalten ist.

Dies scheint Ihre Antwort zu sein: https://bitcointalk.org/index.php?topic=25518.0

Ich habe ein Skript entwickelt, das Ihnen dabei helfen kann, den CLI-Daemon von Bitcoin gleichzeitig zu installieren UND auszuführen.

sudo apt-get install software-properties-common
<your password>
y
sudo apt-get update
sudo apt-add-repository ppa:bitcoin/bitcoin

sudo apt-get update
sudo apt-get upgrade
y
sudo apt-get install bitcoind
y
bitcoind -daemon
bitcoind -testnet -daemon

*Das Leerzeichen zwischen apt-add-repository und update soll wegen einer Eingabeaufforderung zum Drücken der EINGABETASTE vorhanden sein.