Domanda

Quindi ho una sceneggiatura che voglio funzionare come root, senza appendiabiti e bene. In quale ordine dovrei inserire i comandi?

sudo nohup nice foo.bash &

o

nohup nice sudo foo.bash &

eccetera.

Sospetto che non importa, ma vorrei qualche intuizione da parte di coloro che veramente sapere.

È stato utile?

Soluzione

Se si desidera una gentilezza negativa, lo farei: sudo nohup Nice comando perché secondo `info coreutils 'Nohup dovrebbe Preceduto simpatico. Se voglio un valore negativo negativo, sudo deve venire prima, poiché solo la root è in grado di utilizzare valori belli negativi.

Se si desidera una gentilezza positiva, lo farei semplicemente: Nohup Nice sudo comando questo assicura che Nohup e Nice non siano eseguiti con i privilegi di root.

Altri suggerimenti

Sudo potrebbe non rispettare la gentilezza. Almeno, non è sulla mia macchina (Ubuntu 9.04). Esegui questo:

nice sudo nice
sudo nice nice

Stampa 0 e 10. (Nota che "Nice" senza comandi stampica la gentilezza attuale.)

Il sudo dovrebbe andare a durare in modo che Nohup e Nice non siano in esecuzione con i privilegi di root.

Quindi quest'ultimo

~ $ sudo nohup nice whoami
nohup: ignoring input and appending output to `nohup.out'
~ $ sudo cat nohup.out 
root

La differenza tra il primo e il secondo modo che l'hai fatto è chi possiede il file nohup.out. sudo Il primo lo farà di proprietà di Root, nohup Prima che Sudo lo renda di proprietà del tuo utente.

Disaccordo con altre risposte. Raccomando:

sudo nohup nice foo.sh

Ho osservato Nohup Sudo #fallire -cioè nohup non viene sempre trasferito in sub-sub-sub-sub (questo era per alcuni script /etc/init.d su Ubuntu che delegavano ad altri script). Non sono sicuro del perché, certamente sorprendente, ma è stato il caso e ha impiegato una buona piccola quantità per il debug.

(Noto che altri riferiscono che la gentilezza non è passata, quindi sembra meglio dirla per ultimo ... anche se in dubbio sul tuo sistema operativo metti bene prima, perché non avere effetto di solito è meno un problema di quanto nohup non abbia effetto!)

Notare che sudo nohup lascia nohup.out di proprietà di root, anche come è stato menzionato, ma questo è stato risolto con a:

sudo nohup nice foo.sh >> /tmp/foo.stdout.log 2>> /tmp/foo.stderr.log

Immagino che tutti facciano un Exec* Syscall per passare la palla a quello successivo, quindi qualunque sia l'ordine, non lascerà alcun processo sospeso.

Direi che Nohup dovrebbe essere ultimo in modo che gli altri due non clober il gestore del segnale. (Sono sicuro che non gioca bene con i segnali, ma sudo lo fa.)

Quindi, sudo e Nizza, tutto dipende dal modo in cui vuoi modificare la priorità di pianificazione con Nice.

  • Se vuoi aumentare la priorità (cioè, dai un valore negativo a Nizza), fai sudo prima.
  • Se vuoi abbassare la priorità (dai un valore positivo) fallo prima di sudo, poiché non hai bisogno di privilegi di root.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top