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

推薦する

Docker での WSL の構成と変更の問題について

https://docs.microsoft.com/ja-jp/windows/wsl/wsl-...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

HTML テーブル タグ チュートリアル (47): ネストされたテーブル

<br />このページでは、テーブルをネストすることで組版を実現しています。つまり、1 ...

Linux yum パッケージ管理方法

導入yum (Yellow dog Updater, Modified) は、Fedora、RedH...

React Routerの歴史について簡単に説明します

React Router を理解したいなら、まず歴史を理解する必要があります。より具体的には、Rea...

MySQLウィンドウ関数の具体的な使用法

目次1. ウィンドウ関数とは何ですか? 1. ウィンドウをどのように理解しますか? 2. ウィンドウ...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...

初心者がHTMLタグを学ぶ(1)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

js を使用して XML オンライン エディターを作成する例

目次序文オンラインXMLエディタの必要性テクノロジー事前調査ビジュアルプログラミングVSCODEプラ...

解決策 - BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 権限が不十分です

1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...

Docker を使用した SQL Server の実行の実装

現在、.net Core はクロスプラットフォームであり、誰もが Linux と Docker を使...

Vue+canvas は、ウォーターフォール チャートを上から下までリアルタイムに更新する効果を実現します (QT と同様)

早速ですが、デモ画像をご紹介します。実装されている機能は、左側に凡例、右側にウォーターフォール チャ...

MySQL サーバー ログイン エラー ERROR 1820 (HY000) の解決方法

障害サイト: MySQL サーバーにログインし、どのコマンドを実行してもこのエラーが発生します my...

Node.js は、異なるリクエストパスに応じて異なるデータを返します。

目次1. 異なるリクエストパスに応じて異なるデータを返す方法を学びます。 2. 送信データ: データ...

Vue3+Element+Tsは、フォームの基本的な検索リセットやその他の機能を実装します

Vue2 の記述スタイルから Vue3 の形式に切り替えると、記述スタイルとコード構造にいくつかの変...