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.
EDITAR : Advertencia emptor en distribuciones de Ubuntu desde 14.10 en adelante: init
se eligió upstart
y 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 bitcoinuser
por motivos de seguridad:
Para aquellos que ejecutan ubuntu, es posible que estén familiarizados con upstart , un reemplazo para el
sysvinit
estilo 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.conf
y luego ejecútelasudo initctl reload-configuration
. Para empezarbitcoind
, ejecutasudo start bitcoind
. Para pararbitcoind
, corrersudo 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 nice
el proceso para que no acapare la CPU
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
. ¿Que es eso?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í.pastebinit
que existía, ¡genial! Aquí va: paste.ubuntu.com/6691665 pero es más o menos copiar y pegar desde aquí.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 bitcoinuser
como usuario dedicado. Un comentario aparte sobre pastebinit
: También puede canalizarlo para la salida de comandos; más información aquí .expect daemon
a expect fork
y oom never
a oom score -500
. Para obtener más detalles, consulte: stackoverflow.com/a/25731881/1157309Hay 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.
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
d
: /etc/systemd/system/bitcoind.service
.Type=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.d
que 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
bitcoind
de 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.local
o /etc/init
con este comando? Porque ya no tengo un archivo relacionado con bitcoind
.bitcoin.service
en /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.
Janus Troelsen