Ubuntu Linux: ¿cómo inicio bitcoind como un servicio para que se ejecute automáticamente?

Tengo un montón de otros servicios configurados para iniciarse automáticamente cuando se inicia mi servidor Ubuntu (servicios como wicd-daemon y VPN), pero no sé cómo configurar el demonio bitcoin (bitcoind) para que se inicie automáticamente cuando el sistema se inicia. (Esto es en un sistema sin cabeza sin GUI o monitor adjunto).

Estoy tratando de aprender cómo integrar bitcoin con Python para poder escribir servicios habilitados para bitcoin, pero quiero que el sistema inicie bitcoind automáticamente cuando se inicie el sistema para que no tenga que hacerlo manualmente. (Es un fastidio tener que descargar un montón de cadenas de bloques a la vez. Reduce el tiempo de actividad).

Si ya se ha hecho esta pregunta, por favor diríjame a la respuesta. Busqué pero no pude encontrarlo. De lo contrario, ¡ayúdame a resolver esto!

Muchas gracias.

vea este directorio: github.com/bitcoin/bitcoin/tree/master/contrib/init tiene scripts de inicio para muchos sistemas de inicio

Respuestas (6)

EDITAR : Advertencia emptor en distribuciones de Ubuntu desde 14.10 en adelante: initse eligió upstarty se eliminará gradualmente en el futuro . No sé cuándo se hará eso ni qué impacto tendrá en los scripts advenedizos.

Extracto de la página a la que se refiere RentFree ; tenga en cuenta que se supone que ha creado un usuario llamado bitcoinuserpor motivos de seguridad:

Para aquellos que ejecutan ubuntu, es posible que estén familiarizados con upstart , un reemplazo para el sysvinitestilo de arranque ( /etc/init.d/*).

Los archivos de configuración para upstart se almacenan en /etc/init/*.conf. He escrito el siguiente para bitcoind:

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

Ingrese la configuración anterior /etc/init/bitcoind.confy luego ejecútela sudo initctl reload-configuration. Para empezar bitcoind, ejecuta sudo start bitcoind. Para parar bitcoind, correr sudo stop bitcoind.

Probablemente querrá cambiar user , cmd y pidfile a algo que coincida con su configuración, o puede usar lo siguiente como plantilla:

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

Aunque un usuario sugiere la siguiente corrección a la configuración:

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

y otro sugiere configurar niceel proceso para que no acapare la CPU

exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b --nicelevel 15 -m
Aunque esto funciona, el registro advenedizo muestra algunas líneas como esta: /proc/self/fd/9: 9: /proc/self/fd/9: [[: not found. ¿Que es eso?
Si está en Ubuntu, intente pastebinit -i /etc/init/bitcoind.conf, lo que generará una URL con la configuración copiada en una página de acceso público. Vuelva a verificar la URL para asegurarse de que no haya nada privado allí, luego pegue la URL aquí.
Woah, no sabía pastebinitque existía, ¡genial! Aquí va: paste.ubuntu.com/6691665 pero es más o menos copiar y pegar desde aquí.
Realmente no veo nada que deba causar problemas, pero no he pasado mucho tiempo en init.d/upstart; aquí está el mío como referencia, donde lo configuré para iniciar sesión y ser más explícito en su salida . Tenga en cuenta que lo uso bitcoinusercomo usuario dedicado. Un comentario aparte sobre pastebinit: ​​También puede canalizarlo para la salida de comandos; más información aquí .
Esta respuesta es casi correcta. Deberías cambiar expect daemona expect forky oom nevera oom score -500. Para obtener más detalles, consulte: stackoverflow.com/a/25731881/1157309
@c.hill, puede editar las respuestas aquí :-) - He modificado como se sugiere

Hay un script advenedizo para Ubuntu en el árbol de fuentes de Bitcoin Core. Usar eso es la forma más correcta.

Sin embargo, solo inicio sesión como la cuenta de usuario que quiero ejecutar Bitcoin Core daemon, inicio una terminal (si estoy en la GUI) y ejecuto el siguiente comando para editar mi crontab:

crontab -e

Luego agrego la siguiente línea:

@reboot bitcoind -daemon

Guarda el archivo y cierra. Ahora, cada vez que se inicie la computadora, se iniciará el demonio Bitcoin Core. Al apagar, init/upstart/systemd/whatever le enviará una señal SIGTERM, que bitcoind captará e interpretará como el comando para iniciar un apagado seguro.

pero advenedizo ya no es utilizado por Ubuntu, ¿verdad?
si que significa eso

Finalmente termino con esta configuración para mi frambuesa.

nano /etc/systemd/system/bitcoind.service

contenido del archivobitcoind.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

Recargar demonio systemctl

systemctl daemon-reload

Habilitado nuevo servicio bitcoind

systemctl enable bitcoind

Comandos para iniciar o detener el servicio

systemctl stop bitcoind
systemctl start bitcoind

Mostrar estado del servicio

systemctl status bitcoind.service  

Más información en https://github.com/bitcoin/bitcoin/tree/master/contrib/init

gracias por la ayuda Janus Troelsen

Actualizar

No pongas argumentos ya que he considerado que hay una configuración en

/home/pi/.bitcoin/bitcoin.conf
buena, pero te perdiste una d: /etc/systemd/system/bitcoind.service.
Todo bien menos tú quieresType=simple

Nunca lo he ejecutado antes. Dijiste que bitcoind es un demonio, así que aquí tienes cómo configurar un demonio para que se ejecute al inicio:

Normalmente, un demonio tiene su guión de inicio en el /etc/init.d/directorio.

sudo /etc/init.d/bitcoind start

Si es necesario inicializar el daemon al inicio, se vinculará en /etc/rc0.d/o /etc/rc1.d/o ... /etc/rc6.d/... etc.

0 -> 6 son niveles de ejecución:

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

también puede agregar el script en el que se ejecuta su daemon

/etc/rc.local

Si es un script de python, puede escribir en ese archivo:

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

Otra alternativa es ejecutar update-rc.d:

sudo update-rc.d bitcoind defaults

defaults, le indicará update-rc.dque ejecute una configuración predeterminada, cuando se trata de un nivel de ejecución. Puede cambiar su nivel de ejecución, este es un ejemplo:

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

corre man update-rc.d, hay otros ejemplos.

Para eliminarlo del inicio, ejecute:

sudo update-rc.d bitcoind remove
Creo que me eliminé bitcoindde mi inicio con tu último comando. Ahora parece que tengo problemas para activarlo de nuevo. Mi bitcoind tenía un directorio de trabajo especial. Sospecho que el script de inicio contenía este directorio. ¿Quité el archivo físicamente de /etc/rc.localo /etc/initcon este comando? Porque ya no tengo un archivo relacionado con bitcoind.
Ah, tengo un bitcoin.serviceen /etc/systemd/system/el que contiene el camino correcto.

Esta parece ser su respuesta: https://bitcointalk.org/index.php?topic=25518.0

Desarrollé un script que puede ayudarlo a instalar Y ejecutar el demonio CLI de Bitcoin al mismo tiempo.

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

* Se supone que el espacio entre apt-add-repository y update debe estar allí debido a que se le pide que presione ENTER.