nohup vs. Screen


39

Раніше я займався nohupвеликими фоновими роботами, але помітив, що screenв цьому контексті використовується багато людей . Чи screenдає якась функціональна перевага, про яку я не знаю, або це лише питання переваги?

Відповіді:


25

У обох є свої плюси і мінуси:

nohup:

  1. nohup добре використовувати для запуску процесів у фоновому режимі, коли для процесів не потрібен жодний ввід користувача, як-от веб-сервер чи будь-який інший серверний процес подібний.
  2. nohup не створює журнал у каталозі виконання процесу. Ім'я файлу журналу - nohup.out.
  3. Це дозволяє уникнути загибелі процесу через помилкову Ctrl+ Cабо подібну комбінацію клавіш. Просто гарантія.
  4. Зазвичай він встановлюється за замовчуванням із базовим налаштуванням. Не потрібно встановлювати окремо, як екран.
  5. Його функціональність дуже специфічна для виконання роботи у фоновому режимі та демпінгу результатів. Низький об'єм пам'яті.

екран:

  1. Встановлювати потрібно окремо. Ви не можете зайти в центр обробки даних або ввійти в будь-яке поле, і очікується, що на екрані присутній.
  2. Добре керувати декількома терміналами на окремих предметах і давати їм імена.
  3. Це більше менеджер терміналів, а не команда запускати процес нескінченний час, як nohup.
  4. Це більше підходить, якщо процес потребує введення користувача. Як і встановлення сценаріїв, так / ні підказки.
  5. Маючи багато функцій, поставляється його пам’ять. Але погоджено, деякі дійсно чудові функції.

@rahmu, я ніколи не здогадуюсь pid, якщо хочу його вбити. Будьте впевнені, перш ніж когось / чогось вбити;).

Кращий спосіб в обох випадках для екрану і поЬір є: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Скористайтеся екраном і перевірте, що на ньому працює.

На закінчення - це дві різні речі, складені з різними програмами, тому порівняння складно.


20

екран має тонну функцій. Це не просто "демонізує" процес, це більше віконцевий менеджер для терміналів.

Він може бути використаний, якщо процес потребує введення в якийсь момент, ви можете перейти і перевірити висновок процесу, підключитися до його терміналу, ...

Так що ні, це не лише питання переваги, вони зовсім не одне і те ж.


4
Ви також можете перевірити вихід nohup [...] > fileName.log 2>&1. Плюс це означає, що вихід не втрачений.
Сардатріон

1
Мені подобається такий опис екрану: "віконний менеджер для терміналів"!
rickumali

7

screen дозволяє:

  1. поверніться до фактичного запущеного екрана, надсилайте сигнали, дивіться, як швидко він проходить, дивіться, чи є повідомлення про помилки тощо.
  2. іменні процеси зі змістовною назвою. якщо ви хочете вбити один процес, вам не доведеться робити здогадки щодо його ідентифікатора процесу.

-2
  1. Хід процесу можна перевірити також за nohupдопомогою налагодження полів бази даних.
  2. ps ax | grep nohup покаже вам ідентифікатор процесу, і ви можете його вбити.
  3. nohupшвидше. Проста причина полягає в тому, що це залежить від підключення до Інтернету між вашим ПК та сервером. Всякий раз, коли Інтернет йде повільно, процес також йде повільно.

2
Я не розумію пункт 3. Чи можете ви детальніше?
mattdm

1
пункт 2 неправильний.
jiggunjer

# 2 покаже процес вбивства лише в тому випадку, якщо працює лише один процес nohup. Інакше, це буде показувати кілька. У будь-якому випадку пункт 2 не зовсім помилковий.
Аніль_М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.