Woran erkennt man, dass Bitcoin wirklich aufgehört hat zu laufen?

Ich möchte Bitcoin-Blockdaten nehmen und senden, um zu vermeiden, dass ich den Blockchain-Download auf anderen Computern in meinem lokalen Netzwerk erneut durchlaufen muss. Um sicherzustellen, dass keine DB-Korruption auftritt, stoppe ich Bitcoin vor der Übertragung. Das Ausführen des Unix-Befehls bitcoind stopwird zurückkehren

Bitcoin has stopped running!

Ich bemerke, dass es nach Erhalt dieser Nachricht noch einige Augenblicke lang oben läuft. Dies ist kein Problem, da es nie länger als 15 Sekunden dauert, aber ich möchte diesen Vorgang mit einem einfachen PHP-Skript automatisieren.

Die Verwendung des bitcoin-rpc-Befehls wie z. B. $status = $bitcoin->stop()würde zu einem Ergebnis von „Bitcoin läuft nicht mehr“ führen, aber es kann immer noch oben laufen.

Wie stelle ich sicher, dass Bitcoin wirklich aufgehört hat zu laufen? Oder ist es sicher, die Datenübertragung durchzuführen, sobald ich diese Nachricht erhalte (schreibt Bitcoin weiter an db, nachdem es Sie darüber informiert hat, dass es gestoppt wurde)?

Sie können die Prozess-ID jederzeit überprüfen, ob sie beendet ist oder nicht. Oder warte einfach 15 Sekunden. Die Tatsache, dass es immer noch topein paar Sekunden lang läuft, liegt wahrscheinlich daran, dass die Datenbank fertiggestellt, der gesamte Speicher freigegeben und so weiter ist. Ich denke, Sie setzen besser ein sleep(15)(oder 30, um der Sicherheit willen), als darum herum zu programmieren und jede Millisekunde zählen zu lassen.
Gibt es eine Möglichkeit, effektiv zu überprüfen? Ich weiß, ich kann warten und es wird wahrscheinlich funktionieren, aber was ist, wenn Bitcoin bei etwas hängen bleibt? (Es könnte aufgrund eines anderen Programms hängen bleiben)
Ich bin gerade mobil, also kann ich nicht suchen oder Dinge ausprobieren und ich bin ganz sicher nicht in PHP, aber ich denke, es muss einen Weg geben. Fragen Sie andernfalls auf der Stack Overflow-Site, da dies mit der Programmierung zu tun hat, nicht mit Bitcoin.
Ich hatte gehofft, dass jemand Erfahrung mit Bitcoin hat, obwohl Sie Recht haben, es ist wahrscheinlich eine Frage, die eher programmorientiert ist und die gültige Antwort für ein anderes Programm für Bitcoin funktionieren würde. Vielen Dank für Ihre Hilfe!

Antworten (1)

Unter Linux:

ps aux | grep bitcoind

Oder auch:

watch ps aux | grep bitcoind

Aber um Ihre Frage etwas anders zu beantworten, würde ich vorschlagen, vorhandene Bitcoins am Laufen zu halten. Dann fügt Ihr neuer Knoten eine Connect-Anweisung mit der lokalen IP des alten Knotens in der Datei bitcoin.conf hinzu (normalerweise in $HOME/.bitcoin/).

Ihr neuer Knoten verbindet sich dann ausschließlich mit dem vorhandenen Knoten und lädt über Ihr lokales Netzwerk alle Blöcke vom vorhandenen Knoten herunter.

Auch wenn beide PCs immobil sind, können Sie es so belassen, um doppelte Downloads aus dem Internet zu vermeiden. Eine Alternative, wenn der zweite beispielsweise ein Laptop ist, besteht darin, stattdessen -addnode zu verwenden. Von hier :

-addnode=<ip>          Add a node to connect to and attempt to keep the connection open
-connect=<ip>          Connect only to the specified node(s)
-dns                   Allow DNS lookups for -addnode, -seednode and -connect (default: 1)