nohup против экрана

39

В прошлом я nohupвыполнял большие фоновые задания, но заметил, что многие люди используют screenв этом контексте. screenПредоставляет ли мне какое-то функциональное преимущество, о котором я не знаю, или это просто вопрос предпочтений?

HalosGhost
источник

Ответы:

25

У обоих есть свои плюсы и минусы:

поЬир:

  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".

Используйте экран и проверьте, что на нем работает.

В заключение, это две разные вещи, сделанные с разными повестками дня, поэтому сравнение сложно.

mrtipale
источник
20

Экран имеет массу функций. Он не просто «демонизирует» процесс, это скорее диспетчер окон для терминалов.

Его можно использовать, если в какой-то момент процессу требуется ввод, вы можете проверить выход процесса, повторно подключиться к его терминалу, ...

Так что нет, это не просто вопрос предпочтений, это совсем не одно и то же.

Мат
источник
4
Вы можете проверить вывод с помощью nohup [...] > fileName.log 2>&1. Плюс это означает, что вывод не потерян.
Сардатрион - Восстановить Монику
1
Мне нравится это описание экрана: «оконный менеджер для терминалов»!
Рикумали
7

screen позволяет вам:

  1. вернуться к текущему рабочему экрану, отправить сигналы, посмотреть, как быстро он работает, посмотреть, есть ли сообщения об ошибках и т. д.
  2. процессы имен со значимым названием. если вы хотите убить один процесс, вам не нужно делать предположения о его идентификаторе процесса.
AVI
источник
-2
  1. Ход процесса также может быть проверен nohupотладкой полей базы данных.
  2. ps ax | grep nohup покажет вам идентификатор процесса, и вы можете убить его.
  3. nohupбыстрее. Простая причина в том, что это зависит от интернет-соединения между вашим компьютером и сервером. Всякий раз, когда интернет работает медленно, процесс идет медленно.
Николай
источник
2
Я не понимаю пункт 3. Можете ли вы уточнить?
mattdm
1
пункт 2 неверен.
jiggunjer
# 2 покажет процесс для уничтожения, только если запущен только один процесс nohup. Остальное покажет несколько. В любом случае пункт 2 не совсем неверен.
Anil_M