Linux:フォアグランドのプロセスをバックグランドに切り替える の変更点
Top / Linux:フォアグランドのプロセスをバックグランドに切り替える
- 追加された行はこの色です。
- 削除された行はこの色です。
- Linux:フォアグランドのプロセスをバックグランドに切り替える へ行く。
- Linux:フォアグランドのプロセスをバックグランドに切り替える の差分を削除
*Linux:フォアグランドのプロセスをバックグランドに切り替える [#dbc5532c] 実行中で終了待ち(プロンプトが返ってこない状態)のやつをバックグランドに切り替える方法です。 あるのは知ってたけど、あまり使う機会がなくて、今回ついに使う機会ができたので紹介。 ***jobs、fg、bgコマンド [#q7913f72] sleepコマンドを使ってためしてみます。 [root@localhost ~]# sleep 180 ← ① [1]+ Stopped sleep 180 ← ② [root@localhost ~]# まず、sleepコマンドを実行します。すると、当然ですが180秒プロンプトは帰ってきません。 この状態の時に、「Ctrl+z」をおします。① すると、②が出力され、プロンプトが返ってきます。 この状態で「jobs」コマンドを実行すると、③が出力されます。 [root@localhost ~]# jobs [1]+ Stopped sleep 180 ← ③ [root@localhost ~]# 出力的には、左から順に、「ジョブID」、「ジョブの状態」、「コマンド」みたいな感じになります。 ちなみに、「ps」で見てみると以下のようになります。 [root@localhost ~]# ps -ef | grep "sleep 180" | grep -v grep root 29303 29277 0 19:14 pts/2 00:00:00 sleep 180 [root@localhost ~]# 今の状態では、③の出力の通り、プロセスは「Stopped(停止)」している状態なので、いくら待ってもsleepコマンドは終了しません。 つまり、「Ctrl+z」を押すと、プロセスは一旦「停止」状態になります。 この状態の時に、fg、bgコマンドを利用します。 :fg %【ジョブID】|指定されたジョブIDのジョブをフォアグランドで再開 :bg %【ジョブID】|指定されたジョブIDのジョブをバックグランドで再開 簡単ですね笑 実際にバックグランドで再開してみます。(④) [root@localhost ~]# bg %1 ← ④ [1]+ sleep 180 & [root@localhost ~]# [root@localhost ~]# jobs [1]+ Running sleep 180 & ← ⑤ 再開後、jobsコマンドで状態をみると「Running」になっていることが確認できます。(⑤) [root@localhost ~]# ps -ef | grep "sleep 180" | grep -v grep root 29303 29277 0 19:14 pts/2 00:00:00 sleep 180 ←⑥ [root@localhost ~]# もちろん、psでプロセスがいることも確認できます。 [root@localhost ~]# [1]+ Done sleep 180 ← ⑦ [root@localhost ~]# しばらくして、プロンプトで改行を入力すると、そのタイミングでジョブが終了していれば、⑦が出力されます。 [root@localhost ~]# ps -ef | grep "sleep 180" | grep -v grep [root@localhost ~]# [root@localhost ~]# psで確認すると、確かにいなくなってる。 なるほど~簡単ですな~