Linux のバックグラウンドで & と nohup を使用する方法

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので、ジョブを実行して画面を占有したくない場合があります。ディスクに集中的にアクセスするプロセスについては、1 日のピーク時以外の時間帯 (早朝など) に実行することをお勧めします。これらのプロセスをターミナル画面ではなくバックグラウンドで実行できるようにするには、いくつかのオプションがあります。


ジョブがフォアグラウンドで実行されている場合、ターミナルはジョブによって占有されます。コマンドの後に & を追加すると、ジョブをバックグラウンドで実行できます。例えば: sh test.sh &
バックグラウンドで実行するのに適したコマンドには、検索、時間のかかるソート、一部のシェル スクリプトなどがあります。ジョブをバックグラウンドで実行するときには注意してください。ユーザーの操作を必要とするコマンドをバックグラウンドで実行しないでください。そうしないと、マシンはただ待機するだけになります。ただし、バックグラウンドで実行されているジョブは引き続き結果を画面に出力し、作業を妨げます。バックグラウンドで実行するジョブが大量の出力を生成する場合は、次の方法を使用してその出力をファイルにリダイレクトするのが最適です。

コマンド > out.file 2>&1 &

この方法では、すべての標準出力とエラー出力が out.file というファイルにリダイレクトされます。

PS: プロセスを正常に送信すると、プロセス ID が表示されます。これを使用して、プロセスを監視したり、強制終了したりできます。 (ps -ef | grep プロセス番号または kill -9 プロセス番号)

ノーフープ

& コマンドを使用した後、ジョブはバックグラウンドに送信されて実行されます。現在のコンソールは占有されませんが、現在のコンソールが閉じられると (アカウントからログアウトすると)、ジョブは実行を停止します。 nohup コマンドは、アカウントからログアウトした後も、対応するプロセスの実行を継続できます。 nohup はハングアップしないことを意味します。コマンドの一般的な形式は次のとおりです。

nohup コマンド &

nohup コマンドを使用してジョブを送信すると、出力ファイルが別途指定されていない限り、デフォルトではジョブからのすべての出力は nohup.out という名前のファイルにリダイレクトされます。

nohup コマンド > myout.file 2>&1 &

nohup を使用した後、多くの人はそれを無視します。実際、現在のアカウントが終了したり、異常終了したりすると、コマンドが自動的に終了する可能性があります。したがって、nohup コマンドを使用してコマンドをバックグラウンドで実行した後は、コマンドがバックグラウンドで引き続き実行されるように、exit を使用して現在のアカウントを通常どおり終了する必要があります。

Ctrl + Z
フォアグラウンドで実行中のコマンドをバックグラウンドに移し、一時停止状態にすることができます。

Ctrl+C キー
フォアグラウンド コマンドを終了します。

仕事
現在バックグラウンドで実行されているコマンドの数を確認します。

jobs -l オプションは、すべてのタスクの PID を表示します。ジョブのステータスは、実行中、停止中、または終了済みのいずれかになります。ただし、タスクが終了 (強制終了) された場合、シェルは現在のシェル環境に認識されているリストからタスクのプロセス ID を削除します。

2>&1分析

コマンド >out.file 2>&1 &
  1. command>out.file は、コマンドの出力を out.file ファイルにリダイレクトします。つまり、出力内容は画面に印刷されず、out.file ファイルに出力されます。
  2. 2>&1 は標準エラーを標準出力にリダイレクトします。ここでの標準出力は out.file ファイルにリダイレクトされています。つまり、標準エラーも out.file ファイルに出力されます。最後の & により、コマンドはバックグラウンドで実行されます。
  3. 2>1 の意味を考えてみましょう。2 と > の組み合わせはエラーのリダイレクトを意味し、1 はエラーが標準出力ではなくファイル 1 にリダイレクトされることを意味します。これを 2>&1 に変更すると、& と 1 の組み合わせは標準出力を意味し、エラーは標準出力にリダイレクトされます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)
  • Python Nohup Linux バックグラウンド実行出力の問題を解決する
  • PHP デーモン プロセスと Linux コマンド nohup を組み合わせて、1 秒に 1 回のタスク実行を実装します。
  • Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明
  • Linux nohup と tail-f の使い方
  • Linux での Nohup とバックグラウンド実行プロセスの表示と終了

<<:  MySQL 5.7のワンクリックインストールとパスワードポリシーの変更方法

>>:  MySQL の int、char、varchar のパフォーマンスを比較する

推薦する

MySQLトランザクションの基本的な学習と経験の共有

トランザクションは、論理的な操作のグループです。この操作グループを構成する各ユニットは、成功するか失...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

JavaScript CollectGarbage 関数の例

まず、メモリ解放の例を見てみましょう。 <スクリプト言語="JavaScript&q...

フォーム要素の垂直方向の中央揃えに最適なソリューション

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Reactコンポーネント通信の詳細な説明

目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...

MySQL ストアドプロシージャの長所と短所の分析

MySQL バージョン 5.0 ではストアド プロシージャのサポートが開始されました。ストアド プロ...

Node.js+express+socket でオンラインのリアルタイム多人数チャットルームを実現

この記事では、オンラインリアルタイム多人数チャットルームを実現するためのNode.js+expres...

WeChatアプレットは画像コントロールを選択します

この記事の例では、WeChatアプレットで画像コントロールを選択するための具体的なコードを参考までに...

スライド階段効果を実現するjQuery

この記事では、階段スライド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

操作例 MySQL ショートリンク

MySQL ショートリンクの設定方法1. mysql 接続番号ステートメントコマンドを確認します。 ...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

タイプライター効果を実現する純粋な js

この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...

MySQL インデックス障害の上位 10 の問題の概要

目次背景1. クエリ条件に「or」が含まれているため、インデックスが失敗する可能性があります。 2....

CentOS7 上で KVM 仮想化プラットフォームを構築する (3 つの方法)

KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...