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 をインストールするチュートリアル

推薦する

MySQLの認可コマンド grant の使い方のまとめ

MySQL 認証コマンド grant の使用方法:この記事の例は MySQL 5.0 以降で実行され...

HTML の基本 - ハイパーリンク スタイルを設定する簡単な例

*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

目次序文Axiosのインストールと設定シンプルなGETリクエストを開始するPOSTリクエストを行うシ...

MySQLインデックスが使用されない状況のまとめ

MySQL のインデックスの種類一般的に、次の 4 つのカテゴリに分類できます。通常のインデックス:...

Vue プロジェクトで Baidu Map API を使用する方法

目次1. Baidu Map Open Platformにアカウントを登録してログインする2. 必要...

vue WatchとComputedの使用の概要

目次01. リスナーウォッチ(1)機能(2)特性と方法(3)監視対象(4)リスニングアレイ02. 計...

MySQL 増分バックアップとブレークポイントリカバリスクリプトの例

導入増分バックアップとは、完全バックアップまたは最後の増分バックアップの後、後続の各バックアップでは...

レスポンシブ Web デザインが価値のない 5 つの理由

この記事は Tom Ewer の Managewp ブログからのもので、現在人気のレスポンシブ デザ...

ネイティブ JavaScript でシンプルな Gobang ゲームを実装する

この記事では、JavaScriptで簡単なGobangゲームを実装するための具体的なコードを参考まで...

Dockerコンテナシェルスクリプトの実行ステータスを監視する方法

シナリオ会社のプロジェクトはDockerでデプロイされています。原因不明ですが、コンテナが時々停止し...

表の最初の行と最初の列を固定し、適応型ウィンドウを実現するための CSS の例コード

今日のキャンパス採用筆記試験では、固定された最初の行と最初の列を実装し、幅をウィンドウの変更に適応さ...

CSS で text-align と margin: 0 auto を使用して中央に配置する例コード

CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...

HTML テーブルレイアウト例の説明

HTML ドキュメント内の要素は次々に配置され、ブロックレベル要素の前後に改行が追加されるだけで、合...

Linux 脆弱性スキャンツール lynis の使用分析

はじめに: Lynis は、徹底的なセキュリティ スキャンを実行できる Unix システム用のセキュ...

Mysql で自動増分主キー ID を更新するときに問題が発生しました

目次自動インクリメント ID を更新する理由は何ですか?質問解決方法これは私が知っている問題ですが、...