nohup vs. Screen

39

W przeszłości nohupprowadziłem duże zadania w tle, ale zauważyłem, że wiele osób korzysta screenw tym kontekście. Czy screenzapewnia jakąś funkcjonalną przewagę, o której nie wiem, czy jest to tylko kwestia preferencji?

HalosGhost
źródło

Odpowiedzi:

25

Oba mają swoje plusy i minusy:

nohup:

  1. nohup jest dobry do uruchamiania procesów w tle, gdy procesy nie wymagają wkładu użytkownika, takiego jak serwer WWW lub inny podobny proces serwera.
  2. nohup nie tworzy dziennika w katalogu wykonywania procesu. Nazwa pliku dziennika to nohup.out.
  3. Zapobiega zabiciu procesu z powodu pomyłki Ctrl+ Club podobnej kombinacji klawiszy. Tylko zabezpieczenie.
  4. Zwykle jest instalowany domyślnie z podstawową konfiguracją. Nie trzeba instalować osobno jak ekran.
  5. Jego funkcjonalność jest bardzo specyficzna dla uruchamiania zadania w tle i odrzucania wyników. Niska intensywność pamięci.

ekran:

  1. Muszę zainstalować osobno. Nie możesz iść do centrum danych lub zalogować się do żadnego pola i oczekiwać, że pojawi się ekran.
  2. Dobrze zarządzać wieloma terminalami na różne tematy i nadawać im nazwy.
  3. To bardziej menedżer terminali, a nie polecenie uruchamiania procesu przez nieskończony czas, jak nohup.
  4. Jest bardziej odpowiedni, jeśli proces wymaga informacji od użytkownika. Podobnie jak skrypty instalacyjne, monity tak / nie.
  5. Z mnóstwem funkcji pochodzi jego pamięć. Ale zgodzili się, niektóre są naprawdę świetnymi funkcjami.

@rahmu, nigdy nie zgadnę pid, jeśli chcesz go zabić. Upewnij się przed zabiciem kogoś / czegoś;).

Najlepszym sposobem, w obu przypadkach na ekranie i nohup jest: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Użyj ekranu i sprawdź, co na nim działa.

Podsumowując, są to dwie różne rzeczy wykonane w różnych programach, więc porównanie jest trudne.

mrtipale
źródło
20

ekran ma mnóstwo funkcji. Nie tylko „demonizuje” proces, jest bardziej menedżerem okien dla terminali.

Można go użyć, jeśli w pewnym momencie proces wymaga danych wejściowych, możesz przejść do sprawdzenia wyniku procesu, ponownie połączyć się z jego terminalem, ...

Więc nie, to nie jest tylko kwestia preferencji, to wcale nie są to samo.

Mata
źródło
4
Możesz również sprawdzić dane wyjściowe za pomocą nohup [...] > fileName.log 2>&1. Plus oznacza to, że wyjście nie zostanie utracone.
Sardathrion - Przywróć Monikę
1
Podoba mi się opis ekranu: „menedżer okien dla terminali”!
rickumali
7

screen pozwala Ci:

  1. wróć do aktualnego ekranu biegania, wysyłaj sygnały, sprawdź, jak szybko to idzie, sprawdź, czy są komunikaty o błędach itp.
  2. nazwij procesy o znaczącym tytule. jeśli chcesz zabić jeden proces, nie musisz zgadywać jego identyfikatora.
avi
źródło
-2
  1. postęp procesu można również sprawdzić nohupdebugując pola bazy danych.
  2. ps ax | grep nohup pokaże ci identyfikator procesu i możesz go zabić.
  3. nohupjest szybszy. Prostym powodem jest to, że zależy to od połączenia internetowego między komputerem a serwerem. Ilekroć Internet działa powoli, proces ten również przebiega powoli.
Nikolay
źródło
2
Nie rozumiem punktu 3. Czy potrafisz opracować?
mattdm
1
punkt 2 jest niepoprawny.
jiggunjer
# 2 pokaże proces zabijania tylko wtedy, gdy działa tylko jeden proces nohup. W przeciwnym razie pokaże wiele. W obu przypadkach punkt 2 nie jest całkowicie błędny.
Anil_M