Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

【Linux】Bashのバックグラウンドで実行する

こんばんは、葛の葉です。

さて、今回はLinuxでバックグラウンドモードで起動する方法をお伝えします。

flaskアプリを作る

以下のコードをapp.pyとして作成する。

from flask import Flask
app = Flask(__name__)


@app.route("/")
def index():
    return "Hello World!"

&を使う

例えばflaskアプリがあるとして、flask runで通常通り実行すると以下のようになります。

[kuzunoha@:13:44:38:~]$ flask run
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

こうなるとキーを受け付けません。

flask run &として実行をすればバックグラウンドで起動します。

[kuzunoha@:13:40:16:~]$ flask run &
[1] 11422
[kuzunoha@:13:41:06:~]$ * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
■ <- EnterKeyを押す
[kuzunoha@:13:42:21:~]$

コマンドが返ってきているようですがよくわからないのでエンターキーを押してみましょう。PSが表示されどういうことかがわかりやすくなります。

バックグラウンドで動いているのでCurlで確認できます。

[kuzunoha@:13:45:45:~]$ curl http://127.0.0.1:5000/
127.0.0.1 - - [19/Jul/2019 13:47:28] "GET / HTTP/1.1" 200 -
Hello World![kuzunoha@:13:47:28:~]$

バックグラウンドで動いていたコマンドを元に戻す

fgと打てばコマンドが戻ってきます。

[kuzunoha@:13:47:28:~]$fg
flask run

flask runのコマンドに戻ってきたのでCtrl + cで停止します。

^C[kuzunoha@:13:49:29:~]$

起動中のバックグラウンドコマンドを見るには

jobsコマンドを打ちます。

[kuzunoha@:13:49:29:~]$flask run &
[1] 12423
[kuzunoha@:13:50:16:~]$jobs
[1]+  実行中               flask run &

また、バックグラウンドで起動しているコマンドを削除をするにはkillを使います。kill %nとしてjobsで表示された[n]を指定します(nはjob番号といいます)。

[kuzunoha@:13:50:18:~]$kill %1
[1]+  Terminated              flask run
[kuzunoha@:13:53:30:~]$jobs
[kuzunoha@:13:53:39:~]$ <- jobに表示できるものがないため何も返されない