Инструкции по установке для Ubuntu предлагают запустить geth
из командной строки, как я могу запустить его как процесс/службу демона в Ubuntu?
Создайте файл 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
Вы подключаетесь к экрану с помощью screen -x geth
Вы отсоединяетесь от экрана, нажав CTRL + a, затем d
Если вы хотите подключиться к консоли geth после запуска процесса в фоновом режиме (или на экране), вы можете использовать:
geth attach
Источник .
При запуске geht поставьте &
в конце команды в терминале:
geth --rpc &
Перед закрытием терминала вы должны отключить процесс:
disown
Вы также можете передать журналы в такой файл:
geth --verbosity 4 --rpc 2>> /path/to/logfile
Но не забудьте отречься от него, прежде чем закрыть терминал.
Источник .
Мне достаточно использовать эту команду:
nohup geth --rpc &
Чтобы проверить, работает ли служба:
ps ax | grep geth
Чтобы просмотреть последние сообщения журнала:
tail -f nohup.out
Чтобы остановить службу, которую я использую:
pkill geth
killall geth
кажется лучшим вариантом, чтобы остановить процесс geth.killall geth
не работает сnohup
kill -9 $(pgrep -f -l geth | awk '{print $1}')
killall geth
работает. Вам просто нужно подождать несколько минут, чтобы он закрылся изящноВот обновление ответа 5chdn, в котором используется systemd
. Это показывает, как запустить безголовый geth
на вашем сервере Ubuntu.
Конечно, вы должны сначала установить инструменты командной строки, см . https://www.ethereum.org/cli . Вы также должны запустить MyEtherWallet на своем обычном настольном компьютере, чтобы создать учетную запись + закрытый ключ, чтобы вы могли получать средства.
sudo bash
Другие шаги здесь основаны на том, что вы работаете как root. Если вы работаете не как root, узнайте об использовании systemd с пользовательскими процессами . tl; dr, в этом случае они будут запускаться только после входа в систему, но вы можете настроить так, чтобы пользовательская служба запускалась как загрузочная.
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
, будет выдано предупреждение.
systemctl --user enable /root/geth.service
systemctl --user start geth.service
Это запустит его сейчас и после перезагрузки.
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: соединение отклонено
Лучший способ - запустить как systemd:
Создайте файл geth.service (/etc/systemd/system/geth.service):
sudo nano /etc/systemd/system/geth.service
Вставьте ниже
[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
Замените {$USER} на имя пользователя выше. Используйте useradd для создания нового пользователя, если это необходимо.
sudo useradd -d /home/newUser -m --uid 10000 newUser
Включите и запустите службу:
sudo systemctl daemon-reload
sudo systemctl enable geth.service
sudo systemctl daemon-reload
service geth status
sudo service geth start
Проверьте статус:
service geth status
Присоединение к экземпляру geth:
geth attach
Остановите и отключите службу:
sudo service geth stop
sudo systemctl disable geth.service
sudo systemctl daemon-reload
Хотя принятый ответ великолепен, он не сработал для меня. Скорее всего, потому что я на AWS Linux AMI (ну, я знаю). Я собираюсь переключиться в какой-то момент (systemctl нет Пока это, похоже, сработало для меня:
#!/бин/баш #chkconfig: 2345 20 80 #description Запустить тестовую сеть RPC su ec2-user -c '/path/to/get --verbosity 3 --testnet --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --rpcapi="db,eth,net, web3,личное"'
chmod +x geth-тестнет chkconfig --добавить geth-testnet chkconfig --level 345 geth-testnet включен
hcvst
Тейлор Герринг
q9f
Тейлор Герринг
e18r
Карлолм
sudo systemctl --user enable /home/ubuntu/geth.service
2) также пришлось изменить команду на абсолютный путь в службе:ExecStart=/usr/bin/geth ...
альпер
герцог
2>>
вместо2>
?Рубен Томас
ExecStart
у меня не работает. Согласно документации systemd, «в частности, перенаправление с использованием «<», «<<», «>» и «>>», конвейеры с использованием «|», запуск программ в фоновом режиме с использованием «&» и другие элементы синтаксис оболочки не поддерживается." Я также обнаружил, вопреки документации systemd, что необходим абсолютный путь к двоичному файлу.Мохаммад Сабери