「nohupを用いてstreamlitをバックグラウンドで動かしていたらIDが迷子になった!時の対処法」
こんにちは、すぎもちです。今回は、バックグラウンドでstreamlit
アプリを動かす際にnohup
コマンドを使用しているときに起きがちな問題、それは「プロセスIDがわからなくなった!どうしよう?」という状況の対処法について、備忘録として残しておきたいと思います。
問題の発生
streamlit
を含む様々なアプリケーションをバックグラウンドで動かしておきたいとき、私たちはしばしばnohup
コマンドを利用します。例えば、こんな感じで:
nohup streamlit run app.py &
このコマンドは、ターミナルが閉じてもstreamlit
アプリが止まらないようにしてくれます。非常に便利ですが、問題が一つ。ターミナルを閉じたり、PCを再起動したりすると、「あれ、動かしていたあのアプリ、どうやって止めればいいんだっけ?」という状況に陥りがちです。
特に、streamlit
のようにポートを占有して動作するアプリケーションの場合、新たにアプリを起動しようとすると「そのポートは既に使用されています」というエラーに遭遇することがあります。そんな時に、バックグラウンドで動いているアプリのプロセスID(PID)を見失ってしまっては、対処が難しいですよね。
対処法
では、バックグラウンドで動いているstreamlit
のプロセスIDをどうやって見つけ出すのか。解決策は、実にシンプルです。
ターミナルで以下のコマンドを実行します。
ps ax | grep streamlit
これにより、現在実行中のstreamlit
プロセスの一覧が表示されます。表示された情報の左側にある数字が、そのプロセスのIDです。
例えば、こんな出力があったとしましょう。
12345 pts/1 S 0:00 nohup streamlit run app.py
この場合、12345
がプロセスIDになります。これを知った上で、以下のコマンドでプロセスを終了させることができます。
kill 12345
これで、バックグラウンドで動かしていたstreamlit
アプリを無事に終了させることができます。
まとめ
nohup
でstreamlit
をバックグラウンドで動かしているときに、プロセスIDを見失った!という状況に陥った際は、ps ax | grep streamlit
コマンドが非常に役立ちます。この備忘録が、同じような状況に直面した方の一助となれば幸いです。
皆さんの開発生活が少しでも楽になることを願っています。それでは!