Linux における nohup と & の使い方と違いの詳細な説明

Linux における nohup と & の使い方と違いの詳細な説明

例:

例として、Python コード loop_hello.py を使用します。このコードは、ループ回数とループ内の hello world! を出力し、各出力の後に 1 秒間スリープします。

サンプルコードは次のとおりです。

インポート時間
 
main() を定義します:
 私 = 0 
 真の場合:
  私 += 1
  print('%d: こんにちは世界!' %(i))
  時間.睡眠(1)
 
'__main__' == __name__ の場合:
 主要()

loop_hello.py を実行すると、出力は次のようになります。

プログラムは 1 秒ごとにターミナルに文字列を出力します。このとき Ctrl+C を入力すると、プログラムは SIGINT シグナルを受信します。特別な処理が行われない場合、プログラムのデフォルトの動作は終了することです (上記を参照)。

python loop_hello.py & を使用すると、効果は次のようになります。

まず、プロセス番号はターミナルに2367として表示されます。

Ctrl + C と入力して SIGINT 信号を送信すると、プログラムは実行を継続します。

セッションが閉じられると、プログラムは SIGHUP シグナルを受信します。ps aux | grep loop_hello.py を実行すると、プロセス 2367 も閉じられていることがわかります。

ノーフープ

nohup python loop_hello.py を使用すると、効果は次のようになります。

  1. フォアグラウンドにプロセス番号が表示されない
  2. 「入力を無視し、出力を「nohup.out」に追加します」というプロンプトが表示されます
  3. helloの出力はフォアグラウンドに表示されない

セッションを閉じると、プログラムも終了しますか?

  1. プロセスIDを表示するには、ps aux | grep loop_helloを使用します。
  2. セッションを閉じると、プログラムは SIGHUP 信号を受信します。
  3. ps aux | grep loop_helloを再度使用して、プロセスがまだ存在することを確認します。
  4. プロセスを強制終了する

Ctrl + C をテストする

loop_hello.py を起動するには nohup を使用します。Ctrl+C を入力すると、SIGINT シグナルを受信した直後にプログラムが閉じられます。

& と nohup は一緒に使用されます

プログラムを実行するには、nohup python loop_hello.py & を使用します。効果は次のようになります。

Ctrl + C を押して SIGINT 信号を送信します。ps aux を使用して、プロセスがまだ存在するかどうかを確認します。

セッションを閉じ、SIGHUP信号を送信し、ps auxを使用してプロセスがまだ存在するかどうかを確認します。

プロセスを終了したい場合はkillのみ使用できます。

要約:

& を使用してプログラムをバックグラウンドで実行します。

  1. 結果は端末に出力されます
  2. Ctrl+Cを使用してSIGINT信号を送信し、プログラム耐性を高める
  3. セッションを閉じてSIGHUP信号を送信すると、プログラムは終了します。

nohup を使用してプログラムを実行します。

  1. 結果はデフォルトでnohup.outに出力されます。
  2. Ctrl+Cを使用してSIGINT信号を送信すると、プログラムは終了します。
  3. セッションを閉じてSIGHUP信号を送信すると、プログラムは免れる

平日は、プログラムをオンラインで起動するために、 nohup と & を一緒に使用することがよくあります。

  1. SIGINTとSIGHUP信号の両方に耐性がある

さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  JavaScript オブジェクト指向の実践の詳細説明: カプセル化とオブジェクトのドラッグ

>>:  Ubuntu 18.04 に mysql5.7.23 をインストールするチュートリアル

推薦する

process.env.NODE_ENV 本番環境モードを設定する方法

始める前に、process.env.NODE_ENV にはデフォルトで開発と本番の 2 つの状態しか...

vagrant+virtualBoxで仮想マシンを構築する方法

1. はじめにVagrant は、仮想マシン (VirtualBox) を構築および管理するためのツ...

CSS+SVGでBステーションの課金効果を実現するサンプルコード

困難SVG グラフィックの 2 つのマスクの作成まず、コード左側のピンク色のボックスの内容ですこれに...

MySQL 5.7.20 圧縮版のダウンロードとインストールの簡単なチュートリアル

1. ダウンロードアドレス:参考: http://dev.mysql.com/downloads/m...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

1. ユーザーを作成します。注文: 'password' によって識別される ...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

多くの Web サイト デザイナーが犯す最も一般的な間違いは、Web ページが IE で正常に表示さ...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

Linux で Docker を使用して MySQL をインストールする手順

テスターとして、学習プロセス中に Linux でソフトウェアをインストールする必要が頻繁にある場合が...

CSS3はブラウザのスクロールバーのスタイルを変更します

注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows)

1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカ...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

JavaScript で円形のプログレスバー効果を実装する

この記事では、円形のプログレスバー効果を実現するためのJavaScriptの具体的なコードを参考まで...