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

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

通常、ターミナルでコマンドを実行する場合、別のコマンドの入力を開始する前に、現在のコマンドが終了するまで待つ必要があります。これは、コマンドをフォアグラウンドで実行する、またはフォアグラウンド プロセスと呼ばれます。プロセスがフォアグラウンドで実行されている場合、そのプロセスはシェルを占有し、入力デバイスを通じてそのプロセスと対話することができます。

では、コマンドの実行に時間がかかり、同時に他のコマンドを実行したい場合はどうすればよいでしょうか?選択できるオプションはいくつかあります。最も明白で直接的なオプションは、新しいシェル セッションを開始し、そこからコマンドを実行することです。別のオプションとして、コマンドをバックグラウンドで実行することもできます。

バックグラウンド プロセスは、ターミナルの起動後にバックグラウンドで実行され、ユーザーと対話しないプロセス/コマンドです。

この記事では、Linux のバックグラウンド プロセスについて説明します。バックグラウンドでコマンドを開始し、セッションが終了するまでプロセスを実行し続ける方法を説明します。

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

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

指示 &

シェルのタスク ID (括弧で囲まれた内容) とプロセス ID がターミナルに出力されます。

[1] 25177

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

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

コマンド > /dev/null 2>&1 &

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

現在のシェル セッション内のすべての停止されたタスクとバックグラウンド タスクのステータスを表示するには、 jobsコマンドを使用します。

ジョブ -l

出力には、タスク ID、プロセス ID、タスクのステータス、およびタスクを開始したコマンドが含まれます。

[1]+ 25177 ping google.com & を実行中

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


バックグラウンドで複数のタスクがある場合は、コマンドの後に% + タスク ID を追加します。

%1 を

バックグラウンド プロセスを停止するには、 killコマンドの後にプロセス ID を追加します。

キル -9 25177

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

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

01. Ctrl+Zを押して現在のプロセスを停止します

02. bgと入力して停止したプロセスをバックグラウンドに移動する

シェルが終了するまでバックグラウンドプロセスを実行し続ける

接続が失われた場合、またはシェル セッションを終了した場合、バックグラウンド プロセスは終了します。対話型シェルが終了するまでプロセスが実行されるようにする方法はいくつかあります。

1 つの方法は、組み込みのdisownを使用して、シェルのタスク制御からタスクを削除することです。

勘当する

バックグラウンド タスクが多数ある場合は、コマンドの後に% + タスク ID を追加します。

%1 を勘当する

jobs -lを使用して、ジョブがジョブ リストから削除されたことを確認します。実行中のプロセスを一覧表示するには、 ps auxコマンドを使用します。

シェルが終了するまでプロセスが実行されるようにする別の方法は、 nohup使用することです。

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

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

nohup コマンド &

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

nohup: 入力を無視し、出力を 'nohup.out' に追加します

ログアウトしたり、ターミナルを閉じたりしても、プロセスは終了しません。

代替案

一部のプログラムでは、複数の非対話型セッションを同時に実行できます。

画面

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

テムマックス

Tmux は最新の GNU スクリーン インタラクション プログラムです。 Tmux を使用すると、セッションを作成し、そのセッション内で複数のウィンドウを開くことができます。 Tmux セッションは永続的であるため、ターミナルを閉じても、Tmux で実行されているプログラムは引き続き実行されます。

要約する

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

バックグラウンドでコマンドを実行すると、そのコマンドが完了するのを待たずに別のコマンドを実行できます。

上記は、Linux コマンドをバックグラウンドで実行する方法の詳細な内容です。Linux コマンドをバックグラウンドで実行する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux gzipコマンドの使用
  • Linux userdel コマンドの使用法
  • Linuxのdateコマンドの使用
  • Linux statコマンドの使用
  • Linux lsコマンドの使用
  • Linux lnコマンドの使用
  • Linux の cut コマンドの説明
  • Linux bzip2 コマンドの使用

<<:  MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有

>>:  メモリの原則に関する詳細な説明: JS では変数はヒープに保存されるのか、スタックに保存されるのか?

ブログ    

推薦する

Linux で binlog ファイルの作成時間を表示するコマンド

目次背景分析する方法背景MySQL は 26 日の 16:23:49 に大量のスロー クエリを生成し...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...

jQueryは画像追従効果を実現します

この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

Win10でのJDKのインストールと環境変数の設定に関する詳細なチュートリアル

目次序文1. 準備2. インストール3. 環境変数を設定する1. 「新規」をクリックすると、ポップア...

CSS3 border-radius 丸角の実装方法と使い方の詳しい説明

以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

JavaScript で実装された 6 つの Web ページ画像カルーセル効果の詳細な説明

目次1. マウスがカルーセル モジュール上を通過すると、左右のボタンが表示され、モジュールを離れると...

Vueバックグラウンド管理に多言語機能を追加する例

目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...

Linux インストール Redis 実装プロセスとエラー解決

今日、redis をインストールしたところ、今までになかったいくつかのエラーが発生しました。ここで記...

2 つの Linux サーバー間の自動ファイル同期

サーバーB(172.17.166.11)の電源がオンまたは再起動されると、サーバーA(172.17....

Docker は MySQL をインストールし、中国語の文字化けの問題を解決します

目次1. MySQLイメージを取得する2. ダウンロードが完了したか確認する3. MySQLはローカ...

モバイルプラットフォーム開発におけるメタタグの適用の詳細な説明

デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...

JavaScript における this ポイントの問題の詳細な説明

要約する地球環境 ➡️ ウィンドウ通常関数 ➡️ ウィンドウまたは未定義コンストラクター ➡️ 構築...