はじめに
redisにかかわらず、立ち上げたままターミナルを閉じてしまうことがあるかと思います。
今回は、そんな時の対処法を紹介します。
手順
まずは、他で立ち上がっている際にredisを立ち上げてみます。
$ redis-server
60230:C 26 Oct 2021 21:22:26.169 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
60230:C 26 Oct 2021 21:22:26.169 # Redis version=6.2.5, bits=64, commit=00000000, modified=0, pid=60230, just started
60230:C 26 Oct 2021 21:22:26.170 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
60230:M 26 Oct 2021 21:22:26.170 * Increased maximum number of open files to 10032 (it was originally set to 256).
60230:M 26 Oct 2021 21:22:26.170 * monotonic clock: POSIX clock_gettime
60230:M 26 Oct 2021 21:22:26.171 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
60230:M 26 Oct 2021 21:22:26.171 # Failed listening on port 6379 (TCP), aborting.
一番下の行に、ポート番号6379が表示されているので、それを指定して以下のコマンドを実行します。
$ lsof -i:6379
すると、以下のように実行中のポート番号6379のプロセスを表示されます。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 58478 yoshitakakato 18u IPv6 0x2ef7cd263c896b07 0t0 TCP localhost:53627->localhost:6379 (ESTABLISHED)
ruby 58478 yoshitakakato 22u IPv6 0x2ef7cd2638e1cae7 0t0 TCP localhost:64371->localhost:6379 (ESTABLISHED)
ruby 58478 yoshitakakato 23u IPv6 0x2ef7cd2638e1b167 0t0 TCP localhost:64372->localhost:6379 (ESTABLISHED)
ruby 58491 yoshitakakato 13u IPv6 0x2ef7cd262bdeab07 0t0 TCP localhost:64217->localhost:6379 (ESTABLISHED)
redis-ser 79221 yoshitakakato 6u IPv4 0x2ef7cd263ca32fc7 0t0 TCP *:6379 (LISTEN)
redis-ser 79221 yoshitakakato 7u IPv6 0x2ef7cd263cabb7c7 0t0 TCP *:6379 (LISTEN)
redis-ser 79221 yoshitakakato 8u IPv6 0x2ef7cd262bde97e7 0t0 TCP localhost:6379->localhost:64217 (ESTABLISHED)
redis-ser 79221 yoshitakakato 9u IPv6 0x2ef7cd2638e1a4a7 0t0 TCP localhost:6379->localhost:64371 (ESTABLISHED)
redis-ser 79221 yoshitakakato 10u IPv6 0x2ef7cd263cabd147 0t0 TCP localhost:6379->localhost:64372 (ESTABLISHED)
redis-ser 79221 yoshitakakato 11u IPv6 0x2ef7cd263c898487 0t0 TCP localhost:6379->localhost:53627 (ESTABLISHED)
今回は実行中のredisのプロセス番号(PID)79221を以下のコマンドで指定して、プロセスを終了させます。
$ kill -9 79221
-9は強制終了してくれるシグナルIDで、-KILLというシグナル名でもOK。
実行したら、もう一度以下のコマンドで見てみましょう。
$ lsof -i:6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 58478 yoshitakakato 18u IPv6 0x2ef7cd263c896b07 0t0 TCP localhost:53627->localhost:6379 (CLOSE_WAIT)
ruby 58478 yoshitakakato 22u IPv6 0x2ef7cd2638e1cae7 0t0 TCP localhost:64371->localhost:6379 (CLOSE_WAIT)
ruby 58478 yoshitakakato 23u IPv6 0x2ef7cd2638e1b167 0t0 TCP localhost:64372->localhost:6379 (CLOSE_WAIT)
これで、先程まであったredisが消えているので止まったことがわかります。