ssh先のサーバでrailsサーバを立ち上げるシェルを書いたのはいいけど、sshをkillするとrailsのプロセスが残ったままになったのでメモ
今回ハマった点ですが、タイトルの名の通りssh先のサーバでrailsサーバを立てるシェルを書いたのでが、ctrl + c で抜けるとsshはkillされてrailsのプロセスがssh先のサーバで残ったままだったので、解決方法を模索したメモになります。
ssh hostname 'rails s -b 0.0.0.0 -p 3005'
とコマンドを実行した時、ssh先のサーバでrailsサーバを立ち上げてテストを行おうと思っており、実際に問題なく立ち上げることには成功しました。しかし、ctrl + cで処理を終了させるとsshのプロセスだけ死んでrails sのプロセスだけずっと残ったままでした。
プロセスを確認すると↓のようになっており、
$ ps aux | grep ruby 508 17276 1.0 5.2 406732 155300 ? Sl 12:24 0:05 bin/rails s -b 0.0.0.0 -p 3105 508 17587 0.0 0.0 81796 836 pts/0 S+ 12:32 0:00 grep ruby
調べてみると、ttyとかptsの問題のようでした。 下記の記事でわかりやすく説明してくださってました。
簡潔に説明すると
ターミナルからアクセスしていると pts/
というものが表示され、?
と表示されている場合はdemonで立ち上がっているよという目印みたいでした。
上記を解決する方法ですが、
ssh -t hostname 'rails s -b 0.0.0.0 -p 3005'
-t
オプションを付ければ良いみたいでした。