Go-Ethereum

啟動協議棧時出錯:datadir 已被另一個程序使用

  • October 20, 2021

我注意到它geth在我的系統上停止執行,所以我嘗試重新啟動它,但出現以下錯誤: Fatal: Error starting protocol stack: datadir already used by another process

geth我通過執行檢查是否有另一個活動實例,ps aux但一無所獲。所以我不確定該目錄如何被另一個程序使用。調試這種情況的任何想法?

如果您確定 geth 尚未執行,請檢查LOCK數據目錄的 geth 子目錄中是否存在文件。在 Ubuntu 下,這將是~/.ethereum/geth.

我遇到了LOCK導致此問題的流氓 - 我不確定為什麼,可能之前的 geth 會話的正常關閉受到干擾。

刪除鎖定文件 Debian/Ubuntu

刪除(或重命名)~/.ethereum/geth/LOCK並重新啟動 geth。

# Check that geth is not already running:
ps aux | grep geth

# geth not running - Check for presence of LOCK
test -e  && echo LOCK exists || echo LOCK does not exist

# LOCK exists, but geth isn't running so get rid of LOCK
# Rename to be safe - change back if you mess something up
mv ~/.ethereum/geth/LOCK ~/.ethereum/geth/xLOCK

現在嘗試啟動geth。

引用自:https://ethereum.stackexchange.com/questions/37633