VSCode Remote Developmentの無限ループには`pgrep -f vscode-server | xargs kill`

1 min read読了の目安(約900字 1

VSCodeのRemote Developmentはめちゃくちゃ便利なのだけど、たまにSSH先で生きているvscode-serverのプロセスがゾンビになってしまい、そのゾンビがいる状態のサーバにRemote Developmentで繋ごうとするとretry loopにハマってしまうことがある。
これは大体の場合、待っても解決しない。

自分の知る限り、ゾンビプロセスをkillしてあげると適切に動作するようになるので、vscode-serverのプロセスのプロセスidがわかればいい。

というわけで、解決法は以下の通り。

 pgrep -f vscode-server | xargs kill

pgrepは実行中のプロセスの名前とかを使ってプロセスidを取得できるコマンド。-fオプションを渡すことで、あるプロセスを実行するときにシェルに渡した文字列を全部対象としたgrepをしてくれるみたい。

vscode-serverのプロセスはsh /home/hoge/.vscode-server/bin/xxxxxxxxxxxxxxxxxxxxxxxx/server.sh --start-server --host=127.0.0.1 --enable-remote-auto-shutdown --port=0 --connection-secretみたいな感じで実行されているようなので、これでvscode-serverという部分文字列に対してマッチしたプロセスのプロセスidを取得できる。

xargsは各行に対して同じコマンドを実行するだけ(並行処理とかもっといろいろできるけど、今回はこれだけ)。

おわり。

参考

https://github.com/microsoft/vscode-remote-release/issues/2162

https://stackoverflow.com/questions/25751030/how-to-get-only-process-id-in-specify-process-name-in-linux