se
- entro in ssh
- eseguo un programma in background aggiungendo & alla fine
- esco da ssh
il programma smette di funzionare... ehm perchè? lanciandolo con &
finale non dovrebbe continuare anche ad utente disconnesso??
man nohup
--
Stefano L.
Stefano L. ha scritto:
>
> man nohup
>
> in Linux si usa: setsid <tuo_programma>
> Lascia perdere 'nohup' (diciamo che c'e' per compatibilita' Unix).
Io non direi che uno sostituisce l'altro.
Fanno due cose diverse, uno maschera l'hangup (e ridirige l'output !),
l'altro cambia il sessionid.
Uno dei risultati e' che il comando lanciato tramite essi non viene killato
chiudendo la sessione che lo ha lanciato, ma per motivi diversi.
--
Stefano L.
usa screen ... in modo che fai il detach e poi, se in un secondo
momento vuoi controllare com'e' andata, fai il reattach ...
man screen
ciao ...
--
Never try to teach a pig to sing.
It wastes your time and annoys the pig.
Perché il programma, pur girando in background, rimane associato al
terminale e disconnettendoti viene generato un SIGHUP al programma.
Se vuoi che si comporti come un demone (quindi senza associazione da
terminale) basta redirigere input ed output su di un file.
Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
Registered Linux user #337974 < http://giovanni.homelinux.net/ >
> - entro in ssh
> - eseguo un programma in background aggiungendo & alla fine
> - esco da ssh
>
> il programma smette di funzionare... ehm perchč? lanciandolo con &
> finale non dovrebbe continuare anche ad utente disconnesso??
no, con la & lo mandi semlicemente in background, usa nohup o meglio
screen
Ciao, Micky
--
What's this hash prompt on my terminal mean?
Micky Del Favero - System Manager & BOFH
Alternativamente, se ormai lo si č lanciato e non lo si puň fermare (capita)
disown %1
man bash
--
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.
> nohup, su Linux, non serve assolutamente a niente.
E' bello avere delle certezze.
--
Stefano L.
Infatti, io lo trovo comodo quando mi devo connettere, una tantum, ad un
host remoto e eseguire un comando che so durera' molto tempo, ad esempio un
tar, e non voglio che si interrompa se cade la linea o chiudo per errore la
finestra.
[cut]
> Da un altra parte nohup.out puo' crescere a dismisura e se lo vuoi
> usare seriamente devi impostare una rotazione del file.
Sono pienamente d'accordo sul fatto che nohup sia inadatto all'uso in
procedure schedulate, e nemmeno vedo come potrebbe essermi utile in tali
circostanze.
> Pero', per il resto, *in pratica*, vengono utilizzati per fare la stessa
> identica cosa
Non sono del tutto d'accordo. La mancata interruzione del comando in caso di
chiusura della finestra e' solo una stessa conseguenza.
Come ho gia' detto non li considero uno il miglioramento dell'altro ma due
strumenti diversi per fare cose diverse.
> e pero' setsid non esiste su Unix ma solo su Linux.
Non so a che Unix ti riferisci. Come comando potra' anche non esistere, ma
come funzione di sistema esiste eccome.
Comunque non sara' certamente l'unico comando che esiste in Linux e non in
qualche Unix.
> Allora, perche' in Linux e' stato aggiunto setsid rispetto a Unix? Per
> usarlo o per non usarlo?
Per usarlo quando serve usarlo.
> Se lanci un browser, o una qualsiasi applicazione grafica, ti interessa
> guardare gli output?
Figurati se quando uso il browser guardo l'output !
Come tutti quanti lo faccio solo per consumere cicli di CPU e giro la testa
dall'altra parte. :)
> Spero di no, anche perche' lanciandolo da Gnome
> l'output non lo vedi lo stesso.
A parte gli scherzi, credo di aver capito cosa intendi.
Personalmente se lancio un'applicazione grafica da una shell e' proprio
perche' mi interessa vedere standard output ed error output e nohup non mi
serve, altrimenti la lancio dal menu di Kde/Gnome o quel che e'.
> Quindi in linea di massima, se devi usare una applicazione grafica, non
> te ne frega niente di seminare in giro nohup.out
Certo.
> Se dovrai lanciare qualcosa tipo demone, userai nohup,
Non ci penso nemmeno a usare nohup per un demone, non e' adatto !
> avendo pero' cura
> di controllare che il file di output non minacci la partizione del
> server ingrossandosi troppo.
--
Stefano L.
> Pero', per il resto, *in pratica*, vengono utilizzati per fare la
> stessa identica cosa, e pero' setsid non esiste su Unix ma solo su
> Linux.
Forse dovresti aggiornarre il tuo unix, visto che setsid() come system
call è standard da SysV e da una decina di anni è anche posix
> Allora, perche' in Linux e' stato aggiunto setsid rispetto a Unix?
> Per usarlo o per non usarlo?
Perché fa cose diverse da nohup e qualcuno ha pensato che potesse
essere utile ;-)
>>> Allora, perche' in Linux e' stato aggiunto setsid rispetto a
>>> Unix? Per usarlo o per non usarlo?
>> Perché fa cose diverse da nohup e qualcuno ha pensato che potesse
>> essere utile ;-)
>
> Diciamo che in *pratica* fa la stessa cosa di nohup, senza crearti
> un file di log, che nel 99% dei casi non ti serve a nulla?
Non ho preferenze ne per l'uno ne per l'altro, specialmente se fanno
lo stesso servizio. Io in genere uso 'batch' che oltre tutto permette
di lanciare una serie di comandi che andranno in sequenza.
Quello che non ha senso è la tua affermazione che 'setsid' sia una
utility solo di linux visto che la system call è disponibile su tutti
gli unix. Se invece il programma 'setsid' non è disponibile su
solaris o su hpux è solo una scelta di chi prepara le release. O non
ha mai pensato fosse utile oppure pensava che qualsiasi utente unix
dovrebbe essere in grado di scrivere un simile semplice programma (20
linee di codice C inclusi i commenti).
> Stefano L. wrote:
>
>>> Allora, perche' in Linux e' stato aggiunto setsid rispetto a Unix? Per
>>> usarlo o per non usarlo?
>>
>> Per usarlo quando serve usarlo.
>>
>>
>
> si pero', ripeto, provaci: setsid <tuoprogramma>
> e poi: nohup <tuoprogramma> &
>
> e poi spiegatemi qual e' la differenza :)
>
> La differenza, in sostanza, e' che non dovrai cancellare un file che si
> chiama nohup.out
Ti ho gia' detto quando trovo comodo usare nohup e quando non non lo userei
per nulla, la creazione di nohup.out mi sta bene e vado a vedere cosa c'e'
scritto dentro.
La differenza tra nokup e setsid e' sostanziale, se ti interessa capirla a
fondo puoi cominciare, ad esempio, con:
man 2 setsid man 2 setpgrp man 2 kill man 2 fork
guarda bene i concetti di process id, process group id, process group
leader :)
--
Stefano L.
> Ritornando alla domanda principale di questo thread, qual e' la risposta
> piu' idonea?
La risposta piu' idonea, credo che ormai possa deciderla da solo writehem se
ha seguito e capito tutto quanto e' stato scritto.
Tra l'altro lui non ha mai parlato di programmi grafici ma di "programma in
background".
Cio che sostengo io, non e' che nohup sia la risposta piu' idonea, bensi'
che non e' vero che nohup sia stato sostituito da setsid e che quindi non
serva assolutamente a niente ma che, invece, sono semplicemente cose
diverse.
--
Stefano L.
vi ringrazio per le risposte. personalmente ancora stento a cogliere le
differenze. cronologicamente ho letto prima nohup, l'ho provato e funziona.
mi basta così :))
ps -xa | grep programma
kill :)