Как я могу запустить go-ethereum в качестве процесса daemon на Ubuntu?

Инструкции по установке для Ubuntu предлагают запуск geth из командной строки, как я могу запустить его как процесс /обслуживание демона на Ubuntu?

26 голосов | спросил Joris Bontje 22 Jam1000000amFri, 22 Jan 2016 10:48:27 +030016 2016, 10:48:27

4 ответа


27

Запуск в качестве службы systemd

Создайте файл geth.service:

[Unit]
Description=Ethereum go client

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

[Install]
WantedBy=default.target

Включить услугу:

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

Источник .

В качестве альтернативы вы можете использовать экран:

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

Затем вы можете сделать bash похожим на это (~/geth.sh):

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

теперь сделаем его выполнимым:

sudo chmod +x ~/geth.sh

Теперь вы можете запустить bash ~/geth.sh

  

Вы прикрепляетесь к экрану с помощью экрана -x geth

     

Вы отключаетесь от экрана, нажимая CTRL + a, затем d

Если вы хотите подключиться к консоли geth после запуска процесса в фоновом режиме (или на экране), вы можете использовать:

geth attach

Источник .

Или просто прокрутите его в фоновом режиме:

При запуске geht поместите команду & в конце команды в терминале:

geth --rpc &

Перед закрытием терминала вы должны отказаться от процесса:

disown

Вы также можете подключить журналы к файлу следующим образом:

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

Но не забудьте отречься от него, прежде чем закрыть терминал.

Источник .

ответил Afri 22 Jam1000000amFri, 22 Jan 2016 11:14:19 +030016 2016, 11:14:19
11

Просто использовать эту команду достаточно для меня:

nohup geth --rpc &

Чтобы проверить, запущена ли служба:

ps ax | grep geth

Чтобы просмотреть последние сообщения журнала:

tail -f nohup.out

Чтобы остановить службу, я использую:

pkill geth
ответил Juan Ignacio Pérez Sacristán 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 16 Sep 2016 03:45:03 +0300 2016, 03:45:03
2

Вот обновление для ответа 5chdn, в котором используется systemd. Это покажет вам, как запустить безголовый geth на вашем сервере Ubuntu.

Конечно, сначала необходимо установить средства командной строки, см. https: //www.ethereum .org /кли . Вы также должны запустить настольный кошелек или иначе получить установленный кошелек приема.

Шаг 1: наденьте плащ

sudo bash

Другие шаги здесь основаны на том, что вы используете root. Если вы not работают под управлением root, узнайте о с помощью systemd с пользовательские процессы . tl; dr в этом случае они будут запускаться только после входа в систему, но вы можете настроить так, чтобы служба пользователя запускалась с загрузкой

Шаг 2: выполните сервис

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

Выше, вы можете заменить эфирную базу своего собственного кошелька. Если вы не укажете etherbase, тогда geth выдаст предупреждение.

Шаг 3: запустите его

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

Это запустит его сейчас и после перезагрузки.

Шаг 4: проверьте его

sleep 5 # The geth server takes a few seconds to boot up
geth attach

Если geth attach будет успешным, вы узнаете, что сервер geth запущен, и вы увидите:

  

Добро пожаловать в консоль Geth JavaScript!

Если что-то испортилось, вы увидите:

  

Fatal: невозможно подключиться к удаленному geth: наберите unix /root/.ethereum/geth.ipc: connect: connection failed

ответил William Entriken 18 MonEurope/Moscow2017-12-18T18:43:37+03:00Europe/Moscow12bEurope/MoscowMon, 18 Dec 2017 18:43:37 +0300 2017, 18:43:37
0

Хотя принятый ответ велик, для меня это не сработало. Скорее всего, потому, что я нахожусь в AWS Linux AMI (eugh, я знаю). Я намерен переключиться в какой-то момент (systemctl не так давно, похоже, это сработало для меня:

  1. Создать файл /etc/init.d/geth-testnet
#! /Bin /Баш
#chkconfig: 2345 20 80
#description Запустить RPC testnet

su ec2-user -c '/path /to /geth --verbosity 3 --testnet --rpc --rpcaddr = "0.0.0.0" --rpccorsdomain = "*" --rpcapi = "db, eth, net, web3, личный "»

  1. Run
chmod + x geth-testnet
chkconfig --add geth-testnet
chkconfig --level 345 geth-testnet on
ответил babycakes 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 16 Sep 2016 00:35:14 +0300 2016, 00:35:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132