実行時間の長いタスクがある場合は、タスクが完了するのを待つのが常に賢明であるとは限りません。なぜ特定のコマンドのために端末を占有し続けるのですか? Linuxでは、コマンドまたはプロセスをバックグラウンドに送信して、コマンドを実行することができますが、ターミナルは他のコマンドを自由に実行できます。
このチュートリアルでは、プロセスをバックグラウンドで送信するいくつかの方法を紹介します。また、バックグラウンドプロセスをフォアグラウンドに戻す方法についても説明します。
コマンドまたはプロセスに時間がかかることがわかっている場合は、コマンドをバックグラウンドで開始することをお勧めします。
Linuxコマンドをバックグラウンドで実行するには、次のように、コマンドの最後にアンパサンド(&)を追加するだけです。
your_command &
簡単なbashsleepコマンドを使用して、バックグラウンドに送信しましょう。
sleep 60 &
コマンドがバックグラウンドで終了すると、ターミナルにその情報が表示されます。
[1]+ Done sleep 60
すでにプログラムを実行していて、バックグラウンドで実行する必要があることに気付いた場合でも、心配する必要はありません。実行中のプロセスをバックグラウンドに送信することもできます。
ここで行う必要があるのは、 Ctrl+Zを使用することです。 実行中のプロセスを一時停止してから、「 bg」を使用します ‘(バックグラウンドの略)プロセスをバックグラウンドで送信します。一時停止されたプロセスはバックグラウンドで実行されます。
running_command
^z
bg
前と同じ例を見てみましょう。
[email protected]:~$ sleep 60
^Z
[1]+ Stopped sleep 60
[email protected]:~$ bg
[1]+ sleep 60 &
プロセスをバックグラウンドで送信する方法がわかったので、バックグラウンドで実行されているコマンドを知りたいと思うかもしれません。
この目的のために、ターミナルで次のコマンドを入力できます:
jobs
最初にいくつかのコマンドをバックグラウンドに置きましょう。
firefox &
gedit &
vim &
これで、jobsコマンドは、次のようにバックグラウンドで実行中のすべてのジョブ/プロセス/コマンドを表示します。
jobs
[1] Running firefox &
[2]- Running gedit &
[3]+ Stopped vim
[1]、[2]、[3]などの数字に気づきましたか?これらはジョブIDです。また、2つのコマンドに–と+の記号が付いていることにも気付くでしょう。 +記号は、最後に実行またはフォアグラウンドされたジョブを示します。 –記号は、実行またはフォアグラウンドした最後から2番目のジョブを示します。
Linuxでプロセスをフォアグラウンドにする
大丈夫!そのため、Linuxでバックグラウンドでコマンドを実行する方法を学びました。しかし、バックグラウンドで実行されているプロセスを再びフォアグラウンドに戻すのはどうですか?
コマンドをバックグラウンドに送信するには、「bg」を使用しました。バックグラウンドプロセスを元に戻すには、コマンド「fg」を使用します。
fg
これで、単にfgを使用すると、バックグラウンドジョブキューの最後のプロセスがフォアグラウンドになります。前の例では、「fg」を実行するとVimエディターがターミナルに戻ります。
特定のプロセスを前面に表示する場合は、そのジョブIDを指定する必要があります。ジョブIDは、「jobs」コマンドの出力の各行の先頭に表示される番号です。
fg n
ここで、nはコマンドjobsの出力に表示されるジョブIDです。
それだけです
これは簡単なものでしたが、Linuxでバックグラウンドでコマンドを実行する方法についていくつか学ぶには十分でした。 nohupコマンドも学ぶことをお勧めします。このコマンドを使用すると、セッションからログアウトした後でも、バックグラウンドでコマンドを実行できます。
ご質問やご提案がございましたら、下にコメントを残してください。