[팁] 안전하게 geth 셧다운하기

안전하게 geth 셧다운하기

아직 망을 구성하지 않은 상태에서 노드 하나만 가지고 블럭체인 개발을 하다보면 블럭이 가끔 깨지는 경우가 있다.

이는 보통 노드를 안전하게 셧다운하지 않았기 때문에 발생하는 것으로, 노드를 추가하여 블럭을 싱크하다보면 이런 오류가 가끔 뜬다.

이번 팁에서는 어떻게 하면  "안전하게 geth를 셧다운하는가" 에 대해 알아보도록 하자.


1. 콘솔에서 exit

가장 좋은 것은 console을 옵션을 주어 콘솔 상에서 exit하거나 Ctrl-C로 중단하는 것이 가장 안전하다.

 ~/projects/ethereum/test_geth $ geth --datadir ./data --networkid 1988 console
INFO [06-19|13:35:01] Maximum peer count                       ETH=25 LES=0 total=25
...중략...

instance: Geth/v1.8.6-stable-12683fec/linux-amd64/go1.10
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> exit
INFO [06-19|13:35:08] IPC endpoint closed                      endpoint=/home/vingorius/projects/ethereum/test_geth/data/geth.ipc
INFO [06-19|13:35:08] Writing cached state to disk             block=2893 hash=5ad6da…63fb84 root=27d809…8c19ac
INFO [06-19|13:35:08] Persisted trie from memory database      nodes=0 size=0.00B time=7.157µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-19|13:35:08] Writing cached state to disk             block=2892 hash=8ff120…84605b root=3a0959…e6d790
INFO [06-19|13:35:08] Persisted trie from memory database      nodes=0 size=0.00B time=4.843µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-19|13:35:08] Writing cached state to disk             block=2766 hash=a8c280…5d2d62 root=c810f2…2ca057
INFO [06-19|13:35:08] Persisted trie from memory database      nodes=0 size=0.00B time=3.567µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [06-19|13:35:08] Blockchain manager stopped
INFO [06-19|13:35:08] Stopping Ethereum protocol
INFO [06-19|13:35:08] Ethereum protocol stopped
INFO [06-19|13:35:08] Transaction pool stopped
INFO [06-19|13:35:08] Database closed                          database=/home/vingorius/projects/ethereum/test_geth/data/geth/chaindata
 ~/projects/ethereum/test_geth $


2. SIGINT

만일 console옵션을 안 주었다던지, nohup 등 백그라운드로 띄웠다면 다음과 같이 Ctrl-C와 동일한 SIGINT를 날리면 된다.

pkill -INT geth