Как исправить ошибку «адрес уже используется» при попытке запустить консоль geth?

Я загружаю цепочку и на данный момент обработал более 2 миллионов блоков. Я пытаюсь подключиться к консоли geth, чтобы просмотреть статус синхронизации, но я попытался ввести geth consoleдругой терминал (на Mac) и получаю сообщение об ошибке:

Fatal: Error starting protocol stack: listen udp :30303: bind: address already in use

Если я правильно понял, я должен ввести, geth consoleа затем eth.syncing.

Ответы (2)

Ошибка, скорее всего, связана с тем, что geth уже запущен, и когда вы пытаетесь запустить другой процесс geth, используя тот же порт по умолчанию 30303. Если вы знаете каталог данных процесса geth, который загружает цепочку, найдите файл geth.ipc в этом каталоге данных и используйте geth attach ipc:<geth.ipc path>его для подключения к существующему процессу.

Судя по всему, в datadir нет файла ipc... Хотя там полно Idb.
ldb файлы должны находиться в папке chaindata. Попробуйте сделать cd ../..и там должен быть файл geth.ipc.
это не работает для меня:$ geth attach ipc:~/.ethereum/geth.ipc │······················································· Fatal: Unable to attach to remote geth: dial unix ~/.ethereum/geth.ipc: connect: no such fi│······················································· le or directory

Если вы используете Linux, перейдите в терминал и выполните следующие команды:

 $ netstat -p || grep 30303
    $ kill -9 `process id`
Я думаю, вы имеете в виду |(трубу), а не ||(или). Кроме того, пожалуйста, не используйте killс -9. Это соответствует a SIGKILL, что означает «немедленно убить процесс». Если ваш экземпляр Geth в настоящее время записывает на диск, вы запрашиваете поврежденную базу данных... Используйте сигнал, который может быть перехвачен обработчиками сигналов Geth (например, SIGINTс помощью kill -INT <pid>).