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

推薦する

TS 数値区切り文字とより厳密なクラス属性チェックの詳細な説明

目次概要演算子の改良と正確なinstanceofよりスマートなオブジェクトリテラル推論固有のシンボル...

CSS を使用して適応型の幅と高さを持つ 16:9 の長方形を実装する例

先ほど、適応幅と高さが1:1の正方形を作成する方法について説明しました。 https://www.j...

Linux ディスク領域解放問題の概要

IDC のサーバーの /partition 使用率がいっぱいです。 100% に到達しました!確認し...

5分でDockerを使ってRedisのクラスターモードとセンチネルモードを構築する方法を教えます

目次1. 準備Redisイメージを取得する2. Redis Sentinel マスタースレーブモード...

nginx と keepalived を組み合わせて高可用性を実現するための手順を完了する

序文システムの高可用性を満たすためには、通常、クラスターを構築する必要があります。ホストがクラッシュ...

HTML の水平および垂直中央揃えの問題の概要

最近、センタリングの問題に数多く遭遇したので、後で簡単に見つけられるように、時間をかけてそれらを要約...

CocosCreatorでシューティングゲームを作る詳しい解説

目次シーン設定ゲームリソース砲塔の回転動的に生成された弾丸衝突計算効果を高めるターゲットの動き弾薬庫...

IE6/7 は混乱するだろう: 空のテキスト ノードの高さの問題

序文: ietester でドキュメント コードを表示するには、debugbar を使用します。すべ...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

Nginx 仮想ホスト (IP ベース) を構成する 3 つの方法の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...

開発環境にUbuntu 16をインストール後の初期設定

オフィスでは、Linux 開発環境として Ubuntu システムが必要です。現在、Ubuntu 16...

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...

MySQL 挿入時間の 8 時間の違いの問題の解決方法

MySQL挿入時の8時間の時差の問題を解決する通常、jdbc の URL にはいくつかのパラメータを...

HTML リスト タグ dl、ul、ol の使用例

コードをコピーコードは次のとおりです。 <!--リストタグ: <dl>: 階層リス...

mysql 10進データ型変換の実装

最近、次のデータ型のデータベースに遭遇しました:decimal(14,4)発生した問題は次のとおりで...