web-dev-qa-db-ja.com

nohup対Screen

以前は、大きなバックグラウンドジョブを実行するためにNohupを使用していましたが、多くの人がこのコンテキストで screen を使用していることに気付きました。 screenは、私が知らないような機能上の利点を提供しますか、それとも単なる好みの問題ですか?

39
nedblorf

どちらにも独自のプラスとマイナスがあります。

Nohup:

  1. Nohupは、プロセスがWebサーバーやその他のサーバープロセスなどのユーザー入力を必要としない場合に、バックグラウンドでプロセスを実行するために使用するのに適しています。
  2. Nohupはプロセス実行のディレクトリにログを作成します。ログファイル名はNohup.out
  3. 誤ってプロセスが終了するのを防ぎます Ctrl+C または同様のキーの組み合わせ。ただの安全対策。
  4. 通常、デフォルトで基本セットアップでインストールされます。画面のように個別にインストールする必要はありません。
  5. その機能は、バックグラウンドでのジョブの実行と出力のダンプに非常に固有です。メモリを大量に消費します。

画面:

  1. 個別にインストールしました。データセンターにアクセスしたり、ボックスにログインしたりして、画面が表示されることを期待することはできません。
  2. 別々のサブジェクトで複数の端末を管理し、それらに名前を付けるのに適しています。
  3. ターミナルマネージャーの機能であり、Nohupのようにプロセスを無限に実行するコマンドではありません。
  4. プロセスがユーザー入力を必要とする場合、より適しています。インストールスクリプトと同様に、yes/noプロンプト。
  5. 機能のトンで、そのメモリが付属しています。しかし、同意した、いくつかは本当に素晴らしい機能です。

@rahmu、それを殺したいのならpidを推測することはありません。誰か/何かを殺す前に確認してください;)。

画面とNohupの両方の場合の最良の方法は次のとおりです:ps -eaf | grep "Nohup" | grep "your proc name/keyword"

画面を使用して、何が実行されているかを確認します。

結論として、これらは異なるアジェンダで作成された2つの異なるものであるため、比較は困難です。

26
mrtipale

screen にはたくさんの機能があります。それは単にプロセスを「デーモン化」するだけでなく、端末用のウィンドウマネージャーのようなものです。

プロセスがある時点で入力を必要とする場合に使用できます。プロセスの出力を確認して、ターミナルに再接続します...

いいえ、それは好みの問題だけではなく、まったく同じものでもありません。

20
Mat

screenを使用すると、次のことができます。

  1. 実際の実行中の画面に戻って、信号を送信し、速度を確認し、エラーメッセージがあるかどうかを確認します。
  2. 名前は意味のあるタイトルで処理されます。 1つのプロセスを強制終了する場合は、そのプロセスIDについて推測作業を行う必要はありません。
7
avi