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 のパフォーマンスを比較する

推薦する

HTML テーブルの使い方 (Web ページの視覚効果を表示する)

NetEase Blog で HTML を使用する場合、テンプレートに直接コードを追加できることは...

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

Firefox または IE でスパン幅が決定されない場合の解決策

コードをコピーコードは次のとおりです。 <html xmlns="http://ww...

Linux TTY/PTS の違いの概要

キーボードで文字を入力すると、対応するプロセスにどのように送信されるのでしょうか? ps や who...

CentOS 8 に MySql をインストールしてリモート接続を許可する方法

ダウンロードしてインストールします。まず、システムに MySQL または MariaDB があるかど...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

一般的な Nginx のテクニックと例の概要

1. 複数サーバーの優先順位たとえば、各サーバー ブロックがポート 80 をリッスンする場合、www...

MySQLに挿入する前にデータが存在するかどうかを確認する方法

ビジネスシナリオ: 訪問者の訪問状況を記録する必要があるが、繰り返し記録することはできない挿入する前...

JSブラウザストレージの詳しい説明

目次導入クッキークッキーとはクッキー生成方法クッキーの適用シナリオクッキーのデメリット回避策ローカル...

Linux/Mac に MySQL をインストールするときにパスワードを忘れた場合の解決策

序文この記事では主に、Linux/Mac に MySQL をインストールするときにパスワードを忘れた...

MySQL の基本ステートメントを最適化するための 10 の原則の概要

序文データベースの応用において、プログラマーは継続的な実践を通じて多くの経験を積んできました。これら...

docker compose を使用してハーバープライベートウェアハウスをインストールする詳細なチュートリアル

概要港とは何ですか?英語の単語の意味は「港」です。 Harborはコンテナ(貨物)を保管するために使...

LinuxテキストエディタVimの詳しい説明

Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...

HTMLの空リンクの役割についての簡単な説明

空のリンク:つまり、ターゲット エンドポイントとのリンクはありません。フォーマット <a hr...

HTML で js を使用してローカル システム時間を取得する

コードをコピーコードは次のとおりです。 <div id="名前"> ...