Linux/UNIXで実行しているコマンドをバックグラウンドジョブに切り替える

Linux/UNIXで仕事している際、コマンド実行中に別の作業をしたり、ターミナル自体を閉じたくなる事がある。
(たとえば、処理が思ったよりも時間がかかってて、離席したい時など)

screenやtmuxなどで接続している場合はそのまま切っても再接続できるけど、そうでない場合も多いだろう。そんな時は、実行しているコマンドをバックグラウンドに移してやれば良い。
やり方は簡単。まず、コマンドを実行中のターミナル上で、「Ctrl + z」キーを押下することで、コマンドが一時停止状態に移行する。

●実行例

で、この状態で「bg」コマンドを実行することで、先ほどまで実行されていたコマンドがバックグラウンドで再開される。

ただし、ここで注意したいのが今の状態だとターミナルを閉じてしまうと、コマンドは終了されてしまう。
ターミナルを閉じてもジョブを実行し続けたい場合は、「disown」コマンドで対象のジョブ番号を指定することで、今開いているターミナルとジョブの紐付けを解除することができる。

disown -h Job番号

ジョブ番号を知りたい場合は、jobsコマンドで確認すると良いだろう。

[root@BS-PUB-GFRONT-01 ~]# # Job番号の取得
[root@BS-PUB-GFRONT-01 ~]# jobs
[1]+  実行中               ping 8.8.8.8 >> /tmp/test.txt &
[root@BS-PUB-GFRONT-01 ~]#
[root@BS-PUB-GFRONT-01 ~]# # 1番をバックグラウンドジョブとする
[root@BS-PUB-GFRONT-01 ~]# disown -h %1