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.
BEARBEITEN : Vorsichtsmaßnahme bei Ubuntu-Distributionen ab 14.10 und höher – init
wurde gewählt upstart
und 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, bitcoinuser
der aus Sicherheitsgründen aufgerufen wird:
Diejenigen, die Ubuntu verwenden, sind vielleicht mit upstart vertraut , einem Ersatz für
sysvinit
style 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.conf
und führen Sie sie aussudo initctl reload-configuration
. Zum Startenbitcoind
laufensudo start bitcoind
. Anhaltenbitcoind
, laufensudo 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 nice
fü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
/proc/self/fd/9: 9: /proc/self/fd/9: [[: not found
. Was ist das?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.pastebinit
es existiert, cool! Hier geht es: paste.ubuntu.com/6691665 , aber es ist ziemlich viel Kopieren und Einfügen von hier.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 bitcoinuser
als dedizierter Benutzer verwende. Eine Randbemerkung pastebinit
dazu: Sie können auch für die Befehlsausgabe dorthin leiten - mehr Informationen hier .expect daemon
zu expect fork
und oom never
zu wechseln oom score -500
. Weitere Einzelheiten finden Sie unter: stackoverflow.com/a/25731881/1157309Es 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.
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
d
: verpasst /etc/systemd/system/bitcoind.service
.Type=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.d
an, 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
bitcoind
habe 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.local
oder /etc/init
mit diesem Befehl entfernt? Weil ich dort keine Datei mehr habe, die sich auf bitcoind
.bitcoin.service
in /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.
Janus Troelsen