アンドロイド

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

’, Â, � etc... How to fix strange encoding characters in WP or other SQL database

’, Â, � etc... How to fix strange encoding characters in WP or other SQL database

目次:

Anonim

通常、ターミナルでコマンドを実行するときは、コマンドが完了するまで待ってから別のコマンドを入力する必要があります。 これは、フォアグラウンドまたはフォアグラウンドプロセスでコマンドを実行すると呼ばれます。 プロセスがフォアグラウンドで実行されると、そのプロセスがシェルを占有し、入力デバイスを使用して対話できます。

コマンドの終了に時間がかかり、その間に他のコマンドを実行したい場合はどうなりますか? あなたの処分でいくつかのオプションがあります。 最も明白で簡単なオプションは、新しいシェルセッションを開始し、その中でコマンドを実行することです。 別のオプションは、バックグラウンドでコマンドを実行することです。

バックグラウンドプロセスは、ターミナルから起動され、ユーザーの操作なしでバックグラウンドで実行されるプロセス/コマンドです。

、バックグラウンドプロセスがLinuxであることについて説明します。 バックグラウンドでコマンドを開始する方法と、シェルセッションが閉じられた後にプロセスを実行し続ける方法を示します。

バックグラウンドでLinuxコマンドを実行する

バックグラウンドでコマンドを実行するには、コマンドの最後にアンパサンド記号( & )を追加します。

command &

シェルジョブID(角括弧で囲まれている)とプロセスIDが端末に出力されます:

25177

複数のプロセスを同時にバックグラウンドで実行できます。

バックグラウンドプロセスは、コマンドを呼び出した端末にメッセージを書き込み続けます。 stdout および stderr メッセージを抑制するには、次の構文を使用します。

command > /dev/null 2>&1 &

>/dev/null 2>&1 は、 stdout /dev/null リダイレクトし、 stderr stdout リダイレクトすることを意味し /dev/null

jobs ユーティリティを使用して、現在のシェルセッションのすべての停止およびバックグラウンドジョブのステータスを表示します。

jobs -l

出力には、ジョブ番号、プロセスID、ジョブ状態、およびジョブを開始したコマンドが含まれます。

+ 25177 Running ping google.com &

バックグラウンドプロセスをフォアグラウンドにするには、 fg コマンドを使用します。

fg

fg %1

バックグラウンドプロセスを終了するには、 kill コマンドに続けてプロセスIDを使用します。

kill -9 25177

フォアグラウンドプロセスをバックグラウンドに移動する

実行中のフォアグラウンドプロセスをバックグラウンドで移動するには:

  1. Ctrl+Z 入力してプロセスを停止します。bgを入力して、停止したプロセスをバックグラウンドに移動します。

シェルの終了後にバックグラウンドプロセスを実行し続ける

接続が切断されるか、シェルセッションからログアウトすると、バックグラウンドプロセスは終了します。 対話型シェルセッションの終了後にプロセスを実行し続けるには、いくつかの方法があります。

1つの方法は、 disown shell builtinを使用して、シェルのジョブコントロールからジョブを削除することです。

disown

disown %1

jobs -l コマンドを使用して、アクティブなジョブのテーブルからジョブが削除されたことを確認します。 所有されていないものを含め、実行中のすべてのプロセスをリストするには、 ps aux コマンドを使用します。

シェルの終了後にプロセスを実行し続ける別の方法は、 nohup を使用することです。

nohup コマンドは、引数として指定された別のプログラムを実行し、すべての SIGHUP (ハングアップ)シグナルを無視します。 SIGHUP は、制御端末が閉じられたときにプロセスに送信される信号です。

nohup コマンドを使用してバックグラウンドでコマンドを実行するには、次のように入力します。

nohup command &

コマンド出力は nohup.out ファイルにリダイレクトされます。

nohup: ignoring input and appending output to 'nohup.out'

代替案

複数の対話型セッションを同時に行うことができるプログラムがいくつかあります。

画面

ScreenまたはGNU Screenは、画面セッションを開始し、そのセッション内で任意の数のウィンドウ(仮想端末)を開くことができるターミナルマルチプレクサプログラムです。 Screenで実行されているプロセスは、切断されてもウィンドウが表示されない場合は実行を続けます。

Tmux

Tmuxは、GNU画面の最新の代替手段です。 Tmuxを使用すると、セッションを作成し、そのセッション内で複数のウィンドウを開くこともできます。 Tmuxセッションは永続的です。つまり、端末を閉じても、Tmuxで実行されているプログラムは引き続き実行されます。

結論

バックグラウンドでコマンドを実行するには、コマンドの最後に & を含めます。

バックグラウンドでコマンドを実行する場合、別のコマンドを実行する前にコマンドが終了するまで待つ必要はありません。

nohup fg bg jobs disown terminal