Las Instrucciones de instalación para Ubuntu sugieren ejecutar geth
desde la línea de comandos, ¿cómo puedo ejecutarlo como un proceso/servicio daemon en Ubuntu?
Crear un archivo geth.service
:
[Unit]
Description=Ethereum go client
[Service]
Type=simple
ExecStart=geth 2>%h/.ethereum/geth.log
[Install]
WantedBy=default.target
Habilitar servicio:
systemctl --user enable geth.service
systemctl --user start geth.service
fuente _
sudo apt-get update && sudo apt-get install screen -y
Entonces puedes hacer un bash similar a este ( ~/geth.sh
):
#!/usr/bin/env bash
echo "Starting geth"
screen -dmS geth /usr/bin/geth --verbosity 3
ahora hagámoslo ejecutable:
sudo chmod +x ~/geth.sh
Ahora puede ejecutar el bash~/geth.sh
Te adjuntas a la pantalla con screen -x geth
Te separas de la pantalla presionando CTRL + a y luego d
Si desea conectarse a la consola geth después de que el proceso se ejecute en segundo plano (o en la pantalla), puede usar:
geth attach
fuente _
Al iniciar geht, coloque una &
al final del comando en una terminal:
geth --rpc &
Antes de cerrar la terminal debes desautorizar el proceso:
disown
También puede canalizar los registros a un archivo como ese:
geth --verbosity 4 --rpc 2>> /path/to/logfile
Pero no olvide repudiarlo antes de cerrar la terminal.
fuente _
Solo usar este comando es suficiente para mí:
nohup geth --rpc &
Para comprobar si el servicio se está ejecutando:
ps ax | grep geth
Para explorar los últimos mensajes de registro:
tail -f nohup.out
Para detener el servicio que uso:
pkill geth
killall geth
parece una mejor opción para detener el proceso geth.killall geth
no funciona connohup
kill -9 $(pgrep -f -l geth | awk '{print $1}')
killall geth
funciona. Solo tienes que esperar unos minutos para que se cierre con graciaAquí hay una actualización de la respuesta de 5chdn que usa systemd
. Esto muestra cómo ejecutar un headless geth
en su servidor Ubuntu.
Por supuesto, primero debe instalar las herramientas de la línea de comandos, consulte https://www.ethereum.org/cli . También debe ejecutar MyEtherWallet en su computadora de escritorio normal para crear una cuenta + clave privada para que pueda recibir fondos.
sudo bash
Otros pasos aquí se basan en su ejecución como root. Si no está ejecutando como root, aprenda a usar systemd con procesos de usuario . tl; dr en este caso, solo se ejecutarían después de iniciar sesión, pero puede configurar para que un servicio de usuario comience como arranque
cat > /root/geth.service <<EOF
[Unit]
Description=Ethereum go client
[Service]
Type=simple
ExecStart=/usr/bin/geth --etherbase 0xe677698ab732Aa1E56CF2A7997a00e3FA6F5bD88 2>%h/.ethereum/geth.log
[Install]
WantedBy=default.target
EOF
Arriba, puede sustituir la etherbase de su propia billetera. Si no especifica una etherbase geth
, emitirá una advertencia.
systemctl --user enable /root/geth.service
systemctl --user start geth.service
Esto lo ejecutará ahora y después de reiniciar.
sleep 5 # The geth server takes a few seconds to boot up
geth attach
Si geth attach
tiene éxito, sabrá que el geth
servidor se está ejecutando y verá:
¡Bienvenido a la consola Geth JavaScript!
Si algo salió mal, entonces verás:
Fatal: no se puede conectar a geth remoto: marcar unix /root/.ethereum/geth.ipc: conectar: conexión rechazada
La mejor manera es ejecutar como systemd:
Cree el archivo geth.service (/etc/systemd/system/geth.service):
sudo nano /etc/systemd/system/geth.service
Pega lo de abajo
[Unit]
Description=Geth
[Service]
Type=simple
User={$USER}
Restart=always
RestartSec=12
ExecStart=/bin/geth --syncmode "full" --rpc --rpcaddr "0.0.0.0"
[Install]
WantedBy=default.target
Reemplace {$USUARIO} con el nombre de usuario anterior. Use useradd para crear un nuevo usuario si es necesario.
sudo useradd -d /home/newUser -m --uid 10000 newUser
Habilite e inicie el servicio:
sudo systemctl daemon-reload
sudo systemctl enable geth.service
sudo systemctl daemon-reload
service geth status
sudo service geth start
Compruebe el estado:
service geth status
Adjuntar a la instancia de geth:
geth attach
Detener y deshabilitar el servicio:
sudo service geth stop
sudo systemctl disable geth.service
sudo systemctl daemon-reload
Aunque la respuesta aceptada es excelente, no funcionó para mí. Probablemente porque estoy en AWS Linux AMI (eugh, lo sé). Tengo la intención de cambiar en algún momento (systemctl not Hasta ahora, esto parece haber funcionado para mí:
#!/bin/bash #chkconfig: 2345 20 80 #descripción Iniciar red de prueba RPC su ec2-user -c '/ruta/a/geth --verbosidad 3 --testnet --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --rpcapi="db,eth,net, web3,personal"'
chmod +x geth-testnet chkconfig --añadir geth-testnet chkconfig --level 345 geth-testnet activado
hcvst
taylor gerring
q9f
taylor gerring
e18r
carlom
sudo systemctl --user enable /home/ubuntu/geth.service
2) también tuve que cambiar el comando a una ruta absoluta en el servicio:ExecStart=/usr/bin/geth ...
alper
Duque
2>>
en lugar de2>
?Rubén Tomás
ExecStart
me funciona la línea. De acuerdo con la documentación de systemd, "Específicamente, redirección usando "<", "<<", ">" y ">>", tuberías usando "|", ejecutando programas en segundo plano usando "&" y otros elementos de la sintaxis de shell no es compatible". También encuentro, en contra de la documentación de systemd, que se necesita una ruta absoluta al binario.Mohamed Saberi