Go-Ethereum
啟動協議棧時出錯:datadir 已被另一個程序使用
我注意到它
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。