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 では変数はヒープに保存されるのか、スタックに保存されるのか?

ブログ    

推薦する

複数の HTML ページで HTML コードをまとめて呼び出す方法

方法 1: スクリプト方式を使用する:共通ヘッダー ファイル head.js または共通フッター フ...

MySQLで日付を比較する方法の詳細な説明

データ型が datetime であるフィールド add_time を持つテーブル product が...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...

2つのウェブサイトページ翻訳プラグインの共有

TranslateThis URL: http://translateth.is Google 翻訳...

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...

MySQLはデータ復旧を実装するためにbinlogログを使用する

MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...

初心者がソースコードからMySQLのデッドロック問題を理解する

夜遅くまで何度も困難なシングルステップデバッグを行った後、ようやく理想的なブレークポイントを見つけま...

docker-swarm をベースにした継続的インテグレーション クラスタ サービスの構築の詳細な説明

序文この記事は私自身の製作過程の簡単な記録です。練習中に質問があれば、一緒に話し合うことができます。...

VMwareワークステーションとデバイス/資格情報の非互換性によって発生する起動エラーについて

VMware Workstationsが仮想マシンエラーを起動する エラー レポートのリンク htt...

MySql 8.0.11-Winxp64 (無料インストール版) ​​設定チュートリアル

1. インストールディレクトリにzipパッケージを解凍します。まず、mysql-8.0.11-win...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

htm 初心者ノート(初心者は必ず読んでください)

1. HTMLとは何かHTML (ハイパーテキスト マークアップ言語): ハイパーテキスト マーク...

W3C チュートリアル (12): W3C SOAP アクティビティ

Web サービスは、アプリケーション間の通信に関係しています。SOAP は、Web サービス間の X...

MySQL デッドロックのトラブルシューティング プロセスの完全な記録

序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...

JS関数のカリー化の詳細な説明

目次1. 補足知識ポイント: 関数の暗黙的な変換2. 補足知識: call/apply を使って配列...