Когда мое приложение отключается от удаленного Geth, это означает, что он потеряет всю информацию синхронизации?

Мое приложение взаимодействует с удаленным узлом Geth через SSH. Первой командой sended была geth --cache=1024 Когда узел отправлял обратно информацию о регистрации синхронизации, соединение было потеряно. Затем я делаю новый сеанс и отправляю geth attach и думаю, что узел работает все еще. Однако он возвращает ошибку:

  

Невозможно подключиться к удаленному geth: dial unix   /home/.../.ethereum/geth.ipc: connect: нет такого файла или каталога

Действительно ли geth удаляет любые файлы синхронизации, когда теряет текущее соединение? И если это неверно, что происходит, когда узел Geth завершает свою работу (например, из-за сбоя)?

5 голосов | спросил Mergasov 14 WedEurope/Moscow2016-12-14T06:19:56+03:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2016 06:19:56 +0300 2016, 06:19:56

1 ответ


4

Если вы подключаетесь к удаленному компьютеру, а затем запускаете в консоли консольный код geth --cache=1024, когда ваше SSH-соединение выпадает из geth завершается.

Вы можете проверить, работает ли еще geth SSH-обратно на ваш компьютер и введите команду ps -ef | grep geth, например:

Iota:ESE user$ ps -ef | grep geth
  501 37632   879   0  2:36pm ttys001    0:03.31 geth --rpc console
  501 37634  2685   0  2:36pm ttys002    0:00.01 grep geth

Как только geth завершается, geth.ipc файл может быть удален в зависимости от того, прекращается ли приложение. Этот файл geth.ipc является межпроцессным коммуникационным каналом, а не обычным файлом. Как только geth завершается, файл все равно может оставаться в файловой системе, но другие процессы не могут связываться с geth, используя этот канал.

Если geth завершается без изящного закрытия, данные блок-цепи могут иногда (очень редко) быть повреждены.

Ниже приведен рецепт, если вы хотите сохранить geth, запущенный на вашей машине Ubuntu (предположительно с ваших предыдущих сообщений). Если вы хотите завершить этот фоновый процесс geth, используйте команду killall -q --signal SIGINT geth



Рецепт для запуска geth Автоматически при запуске

Если вы хотите, чтобы geth работал на вашем удаленном компьютере все время, вот рецепт, все, что нужно сделать в SSH сеанс на удаленном компьютере:

  1. Создайте каталог для ваших журналов - я использую $HOME/ethlogs.

    [email protected]:~$ mkdir $HOME/ethlogs
    
  2. Создайте каталог для архива журнала - я использую $HOME/logarchive.

    [email protected]:~$ mkdir $HOME/logarchive
    
  3. Создайте файл $HOME/bin/runGeth со следующим содержимым:

    #!/bin/sh
    
    # Kill geth gracefully
    killall -q --signal SIGINT geth
    # Wait for geth to be killed gracefully
    sleep 30
    # Kill viciously if geth is still running
    killall -q geth
    
    # Remove the IPC pipe file if it still exists
    rm $HOME/.ethereum/geth.ipc
    
    DATE=`date +%Y%m%d_%H%M%S`
    # Save old log file into the log archive directory
    mv $HOME/ethlogs/geth.log $HOME/logarchive/geth.log_$DATE
    
    # Use 6 for full details
    VERBOSITY=3
    
    # Add your geth command line parameters below
    geth --cache=1024 --verbosity $VERBOSITY 2>> $HOME/ethlogs/geth.log &
    
  4. Установите исполняемый бит файла.

    chmod 700 $HOME/bin/runGeth
    
  5. Выйдите из системы, а затем войдите в систему, так что ваш путь $ HOME /bin активируется, если он еще не был выполнен.

  6. Запустите geth

    [email protected]:~$ runGeth
    
  7. Если вы хотите geth автоматически запускаться после перезагрузки компьютера, добавьте runGeth для вашего файла /etc/rc.local.

    [email protected]:~$ sudo vi /etc/rc.local
    

    и добавьте следующую строку перед exit 0:

    sudo -u {your username} /home/{your username}/bin/runGeth &
    

    Сохранить и выйти из файла. Попробуйте перезагрузить компьютер и используйте ps -ef | grep geth, чтобы проверить, если geth.

ответил The Officious BokkyPooBah 14 WedEurope/Moscow2016-12-14T06:56:45+03:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2016 06:56:45 +0300 2016, 06:56:45

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

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

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