[Ethereum] How to run go-ethereum as daemon process on Ubuntu

daemongo-ethereumUbuntu

The Installation Instructions for Ubuntu suggest running geth from the command line, how can I run it as daemon process / service on Ubuntu?

Best Answer

Run as a systemd service

Create a file geth.service:

[Unit]
Description=Ethereum go client

[Service]
Type=simple
ExecStart=geth 2>%h/.ethereum/geth.log

[Install]
WantedBy=default.target

Enable service:

systemctl --user enable geth.service
systemctl --user start geth.service

Source.

Alternatively you could use screen:

sudo apt-get update && sudo apt-get install screen -y

Then you can make a bash similar to this (~/geth.sh):

#!/usr/bin/env bash
echo "Starting geth"
screen -dmS geth /usr/bin/geth --verbosity 3

now let's make it executable:

sudo chmod +x ~/geth.sh

You can now run the bash ~/geth.sh

You attach to the screen with screen -x geth

You detach from the screen by pressing CTRL + a then d

If you want to attach to the geth console after the process runs in the background (or in screen), you can use:

geth attach

Source.

Or simply fork it in background:

When starting geht, put a & at the end of the command in a terminal:

geth --rpc &

Before closing the terminal you should disown the process:

disown

You could also pipe the logs to a file like that:

geth --verbosity 4 --rpc 2>> /path/to/logfile

But don't forget to disown it before you close the terminal.

Source.

Related Topic