BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

バックグラウンドでコマンドを実行する方法[Linux/Ubuntu]

この記事では、Linux(Ubuntuを含む)シェルのバックグラウンドでコマンドを実行する方法を説明します。これは、SSH経由でリモートで作業する場合に便利です。

SSH経由でリモートコンピュータにリモート接続していて、時間のかかるタスクを実行したいとします。

タスクの実行中は、通常、ターミナルウィンドウを開いたまま、接続を開いたままにする必要があります。ただし、別のタスクを実行するためにウィンドウを閉じる必要がある場合、または接続を中断する可能性のあるむらのあるインターネット接続がある場合、これは面倒な場合があります。

ウィンドウを閉じたり、接続が失われたりすると、リモートコンピュータでのコマンドの実行が停止する場合があります。

コマンドをバックグラウンドで実行することで、これを回避できます。接続/セッションが開いたままであるかどうかに関係なく、コマンドは実行され続けます。

コマンドをバックグラウンドで実行するために送信することは、コマンドを実行したいが、コマンドが完了するのを待ちたくない場合や、スクリプトの後半で出力を必要としない場合にも、スクリプトで役立ちます。

の使用 バックグラウンドでコマンドを実行するには

Linuxでバックグラウンドでコマンドを実行するのは簡単です– を追加します コマンドの最後までの文字:

 your_command_here&

たとえば、次のコマンドはファイルのペアを圧縮します。コマンドはバックグラウンドで実行されるため、他のコマンドを実行する前にコマンドが完了するのを待つ必要はありません。

 zip archive.zip file1 file2&

簡単!出力は次のようになります:

 [1] 3001 

…仕事を示します(この場合は [1] )とプロセスID(この場合は 3001 )バックグラウンドで実行されているコマンドの。

ジョブが完了したとき(または失敗したとき )、ジョブのステータスが出力されます:

[1]+完了ziparchive.zipfile1 file2 

バックグラウンドジョブの出力を非表示にする

コマンドの出力は、バックグラウンドで実行されている間も引き続き端末に出力されます。

これを非表示にしておきたい場合(つまり、他のタスクの実行を中断している場合)–標準のリダイレクトを使用して出力を抑制することができます。

 your_command> / dev / null 2>&1&
  • 上記、> コマンドのSTDOUT(標準出力)を / dev / nullにリダイレクトしています 。
  • コマンドのSTDERROR(標準エラー出力)は、 2>&!を使用してSTDOUTにリダイレクトされます。 STDERRが/dev / nullに移動するようにします 同様に。
  • / dev / null 出力がどこにも行かないことを意味します。 それは消えて、隠されて、何にもなりません。

実行中のバックグラウンドジョブの一覧表示

ジョブを使用する 現在実行中のバックグラウンドジョブを一覧表示するコマンド:

 jobs -l <​​/ pre> 

実行中のバックグラウンドジョブのリストが表示されます。各エントリは次のようになります。

 [1] + 3601 running ping 8.8.8.8> / dev / null 2>&1 

上記では、コマンド ping 8.8.8.8> / dev / null 2>&1を確認できます。 はバックグラウンドで実行されており、ジョブIDは1、プロセスIDは3601です。

バックグラウンドジョブの停止

キル コマンドはタスクを停止します:

キル3601

プロセスIDを指定します バックグラウンドジョブの、そしてそれはそれを停止(殺す)します。

セッションが中断されても、バックグラウンドジョブを実行し続ける

これはおそらく最も便利なビットです。

ウィンドウを閉じたり、接続が切断されたり、セッションが中断されたりした場合でも、コマンドの実行を継続できるようにするには、disownコマンドを使用してバックグラウンドジョブをdisownする必要があります。

否認%1 

上記は、ジョブIDが 1のバックグラウンドジョブです。 所有されていません。現在のシェルから切断され、終了するかエラーが発生するか、KILLコマンドを使用して強制終了されるまで実行を継続します。

この記事をチェックして、実行中のすべてのプロセスを一覧表示する方法を確認してください –非公開のタスクを追跡する必要がある場合に必要になることがあります

実行中のコマンドをバックグラウンドに移動する

実行中のコマンドをバックグラウンドに移動するには、コマンドを一時停止してから、バックグラウンドに移動する必要があります。

これを行うには、コマンドの実行中に CTRL + Zを押します。 。次のように表示されます:

一時停止されたcommand_name

…コマンドが一時停止されたことを確認します。

次に、 bgと入力します コマンドをバックグラウンドで実行し続けるには:

 bg 

のようなものが表示されます
続きのcommand_name

…コマンドがバックグラウンドで実行されていることを確認します。


  1. Linuxでwatchコマンドを使用する方法と例

    Linuxのwatchコマンドは1つのことを行います。コマンドを繰り返し、結果を繰り返し出力して、変更を監視できるようにします。使用方法は次のとおりです。 watchコマンド構文 watchコマンドの構文は次のとおりです。 watch OPTIONS COMMAND 注: オプション 以下の表のオプションのリストである必要があります。これにより、ウォッチのデフォルトの動作が変更されます。 コマンド コマンド 監視するコマンドです 繰り返し実行する必要があります。これは、出力を監視します 見る 中断されるまで実行されます(したがって、 CTRL+Cを押して終了します ) オプション 時

  2. YouTube をバックグラウンドで再生する方法

    YouTube は説明不要の名前で、子供から大人まで誰もが YouTube を利用しています。したがって、YouTube がテレビに取って代わったと言っても過言ではありません。 人々は YouTube を使用して、映画、ドキュメンタリー、スタンダップ コメディ番組など、さまざまな目的で視聴しています。これに加えて、YouTube を使用して音楽をストリーミングする人もいます。 これらすべてが良さそうで、私たちは YouTube アプリに夢中になります。しかし、Android で音楽を再生したり、他のタスクを実行したりすると、状況が難しくなります。簡単に言えば、PC で YouTube を