私はnohup
過去に大規模なバックグラウンドタスクを実行しましたが、多くの人が次のことを使用していることがわかりました。screen
この文脈で。screen
私が認識していない機能的な利点の一種を提供していますか、それとも単に好みの問題ですか?
答え1
どちらにも独自の長所と短所があります。
北面:
- nohupは、Webサーバーや他の同様のサーバープロセスなど、プロセスにユーザー入力が必要ない場合はバックグラウンドでプロセスを実行するのに理想的です。
- nohup は、プロセスが実行されるディレクトリにログを生成します。ログファイル名は
nohup.out
。 - CtrlC無効な+または同様のキーの組み合わせがプロセスを終了するのを防ぎます。ただ保証です。
- 通常はデフォルト設定でデフォルトでインストールされます。スクリーンのように別々にインストールする必要はありません。
- その機能は、バックグラウンドでジョブを実行し、出力をダンプするのに非常に具体的です。メモリ集約度が低い。
画面:
- 別途設置が必要です。データセンターに行くか、ボックスにログインして画面が表示されることを期待することはできません。
- さまざまなテーマで複数の端末を管理し、名前を付けるのに効果的です。
- 無限の時間プロセスを実行するnohupのようなコマンドではなく、ターミナルマネージャに近いです。
- プロセスにユーザー入力が必要な場合に適しています。インストールスクリプトと同様に、はい/いいえプロンプトがあります。
- 多くの機能によってメモリが提供されます。しかし、一部の機能は本当にクールだということに同意します。
@rahmu、私はそれを殺そうとしたときにpidを推測しません。誰か/何かを殺す前に常に確認してください;)。
どちらの場合も、最良のアプローチはscreenとnohupです
ps -eaf | grep "nohup" | grep "your proc name/keyword"
。
画面を使用して、画面で何が実行されているかを確認します。
全体的に、それらは異なる議題を持つ2つの異なるので、比較は困難です。
答え2
画面多くの機能があります。これは単なる「デーモン」ではなく、端末のウィンドウマネージャに似ています。
ある時点でプロセスに入力が必要な場合はそれを使用でき、プロセスの出力を確認してその端末に再接続できます。
したがって、いいえ、これは単に好みの問題ではなく、まったく同じものではありません。
答え3
screen
次のことができます。
- 実際の実行画面に戻って信号を送信し、どれだけ早く行くかを確認し、エラーメッセージがあるかどうかを確認するなどのタスクを実行します。
- 意味のあるタイトルでプロセス名を指定してください。プロセスを終了するには、そのプロセスIDを推測する必要はありません。
答え4
nohup
データベースフィールドのデバッグでもプロセスの進捗状況を確認できます。ps ax | grep nohup
プロセスのIDが表示され、それを終了できます。nohup
比較的高速です。理由は簡単です。 PCとサーバー間のインターネット接続によって異なります。インターネットが遅くなるたびに、プロセスも遅くなります。