nohup vs. Screen


39

In passato, eseguivo nohupgrandi lavori in background, ma ho notato che molte persone usano screenin questo contesto. Non screenfornire un qualche tipo di vantaggio funzionale che io sono a conoscenza di, o è solo una questione di preferenza?

Risposte:


25

Entrambi hanno i loro lati positivi e negativi:

nohup:

  1. nohup è utile da utilizzare per eseguire processi in background quando i processi non richiedono input dell'utente, come un server Web o qualsiasi altro processo server simile.
  2. nohup crea il log nella directory di esecuzione del processo. Il nome del file di registro è nohup.out.
  3. Evita che il processo venga ucciso a causa di una combinazione di tasti errata Ctrl+ Co simile. Solo una salvaguardia.
  4. Normalmente viene installato per impostazione predefinita con l'installazione di base. Non è necessario installare separatamente come schermo.
  5. La sua funzionalità è molto specifica per l'esecuzione di un lavoro in background e il dumping dell'output. Memoria insufficiente.

schermo:

  1. Devo installare separatamente. Non è possibile accedere a un data center o accedere a nessuna casella e aspettarsi che sia presente la schermata.
  2. Buono a gestire più terminali su argomenti separati e dare loro nomi.
  3. È più un terminal manager e non un comando per eseguire un processo per un tempo infinito come nohup.
  4. È più adatto se il processo richiede l'input dell'utente. Come gli script di installazione, prompt sì / no.
  5. Con tonnellate di funzionalità, arriva la sua memoria. Ma concordato, alcune sono davvero fantastiche funzionalità.

@rahmu, non indovinerei mai Pid se voglio ucciderlo. Assicurati prima di uccidere qualcuno / qualcosa;).

Il modo migliore in entrambi i casi per schermo e nohup è: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Usa lo schermo e controlla cosa c'è in esecuzione.

Per concludere, sono due cose diverse fatte con programmi diversi, quindi il confronto è difficile.


20

lo schermo ha un sacco di funzioni. Non solo "demonizza" un processo, è più un gestore di finestre per i terminali.

Può essere usato se il processo ha bisogno di input ad un certo punto, puoi andare e controllare l'output del processo, riconnetterti al suo terminale, ...

Quindi no, non è solo una questione di preferenza, non sono affatto la stessa cosa.


4
Puoi anche controllare l'output con nohup [...] > fileName.log 2>&1. Inoltre, ciò significa che l'output non viene perso.
Sardathrion - Ripristina Monica il

1
Mi piace quella descrizione dello schermo: "un gestore di finestre per terminali"!
rickumali,

7

screen lasciati:

  1. tornare alla schermata corrente, inviare segnali, vedere quanto va veloce, vedere se ci sono messaggi di errore, ecc.
  2. il nome elabora con un titolo significativo. se vuoi uccidere un processo non devi fare congetture sul suo id di processo.

-2
  1. l'avanzamento del processo può essere verificato anche dal nohupdebug dei campi del database.
  2. ps ax | grep nohup ti mostrerà l'ID del processo e puoi ucciderlo.
  3. nohupè più veloce. Il semplice motivo è che dipende dalla connessione Internet tra il PC e il server. Ogni volta che Internet procede lentamente, anche il processo procede lentamente.

2
Non capisco il punto 3. Puoi elaborare?
Mattdm,

1
il punto 2 non è corretto.
jiggunjer,

# 2 mostrerà il processo per uccidere solo se c'è solo un processo nohup in esecuzione. Altrimenti, mostrerà più. In entrambi i casi, il punto 2 non è del tutto errato.
Anil_M,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.