Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    chiudere ssh e lasciare programma in esecuzione

    Ciao a tutti!

    volevo sapere se è possibile in qualche modo preservare un processo lanciato da una shell ssh e lasciarlo in esecuzione anche dopo la chiusura della shell medesima.
    Esempio, entro con la shell ssh sul server, eseguo ./pippo e pippo occupa la shell svolgendo varie operazioni.
    A questo punto se io esco da ssh chiudo la sessione e buona notte, pippo viene terminato.
    Esiste un modo per lasciarlo comunque in esecuzione?

    Grazie mille!!

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  2. #2
    ./eseguibile &

    ...e lo mandi in background disimpegnando la shell.

    fg

    ...e lo fai tornare in foreground.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  3. #3
    Giusto! però se esco (exit) mi ricorda che ci sono programmi in background e se digito nuovamente "exit" si chiude la connessione ssh e il povero programma in background viene terminato
    Mentre io vorrei che rimanesse in esecuzione in modo da ritrovarlo al prossimo accesso ssh tra i processi in esecuzione (ps aux).

    Altra cosa che mi sono dimenticato di dire, oltre a metodi particolari per lanciare un programma ed ottenere l'effetto richiesto è anche possibile modificarne lo stato at run-time?

    Facciamo finta che io abbia un amico ( ) che ha eseguito pippo da ssh con il comando

    ./pippo

    e che (sempre) pippo possa impiegare una settimana a fare il suo sporco lavoro...
    Facciamo finta che ora questo mio amico voglia chiudere il collegamento ssh ( ) senza perdere tutto il lavoro fatto finora da pippo. E' possibile oppure questo mio amico è stato un vero pollo e dovrà riavviare tutto oppure tenere aperto ssh fino alla fine dell'esecuzione di pippo?
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  4. #4
    Interessa anche a me.

    Comunque si potrebbe far eseguire lo script da rc.d .. reboot .. lo script viene eseguito..

    Quando ti pare ti connetti e controlli se ha finito ...
    Main: Asus P5KR | Intel Q6600 G0 @ 3.6GHz | Kingston 2x1GB DDR-II @ 800MHz | POV GeForce 8800GT 512MB | Seagate Barracuda 7200.11 32MB 2x500GB RAID0 | Enermax Chakra 3052BS | Enermax Liberty 500W | Zerotherm Nirvana NV120 Premium || eee PC || Net: Atlantis Land WebShare 340 | Alice 19M/1M || Gentoo Linux | gtk-gnutella rulezz.

  5. #5
    Giusto! però se esco (exit) mi ricorda che ci sono programmi in background e se digito nuovamente "exit" si chiude la connessione ssh e il povero programma in background viene terminato
    Mentre io vorrei che rimanesse in esecuzione in modo da ritrovarlo al prossimo accesso ssh tra i processi in esecuzione (ps aux).

    Altra cosa che mi sono dimenticato di dire, oltre a metodi particolari per lanciare un programma ed ottenere l'effetto richiesto è anche possibile modificarne lo stato at run-time?

    Facciamo finta che io abbia un amico ( ) che ha eseguito pippo da ssh con il comando

    ./pippo

    e che (sempre) pippo possa impiegare una settimana a fare il suo sporco lavoro...
    Facciamo finta che ora questo mio amico voglia chiudere il collegamento ssh ( ) senza perdere tutto il lavoro fatto finora da pippo. E' possibile oppure questo mio amico è stato un vero pollo e dovrà riavviare tutto oppure tenere aperto ssh fino alla fine dell'esecuzione di pippo?
    Mi sembra strano che se interrompi la sessione ssh venga chiuso anche il programma in background. Ma sei sicuro?
    In alternativa mi verrebbe in mente di consigliarti di lanciare il programma sotto forma di demone.
    In tal caso ti rimando a google dato che la procedura non è immediatissima e può variare tra distribuzioni:
    http://www.google.it/search?hl=it&q=...n+Google&meta=
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  6. #6
    c'e' il comando

    nohup

    nohup - run a command immune to hangups, with output to a non-tty

  7. #7
    A quanto pare dipende anche dai programmi...
    vi ti informa che è in background quando dai l'exit...
    questo esempio invece dimostra che altri programmi non lo fanno, ed ssh adotta un comportamento un po' strano..

    mi collego in ssh

    giulio@svweb:~$ php -r 'for( $x=0; true; $x++) { sleep(10); echo $x, "\n"; }' &
    [1] 6765
    giulio@svweb:~$ 0

    giulio@svweb:~$ ps aux | grep php
    giulio 6765 0.1 1.0 19540 5376 pts/2 S 13:51 0:00 php -r for( $x=0; true; $x++) { sleep(10); echo $x, "\n"; }
    giulio 6784 0.0 0.1 3928 612 pts/2 R+ 13:52 0:00 grep php
    giulio@svweb:~$ 1

    You have new mail in /var/mail/giulio
    giulio@svweb:~$ exit
    logout
    2
    3

    Cioè... si chiude la sessione e non si possono iù digitare ulteriori comandi ma sulla shell del computer local continuano a comparire i numeri e ignora CTRL+C o altri comandi..
    Se si termina la shell locale si termina anche il programma in remoto VVoVe:

    Nohup come funziona? Può agganciarsi ad un programma già in esecuzione?
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  8. #8
    Originariamente inviato da IroN@xiD
    Nohup come funziona? Può agganciarsi ad un programma già in esecuzione?
    Invece di digitare il comando, digita: "nohup comando &" senza virgolette.
    Per agganciarsi a un processo gia' in esecuzione, credo che prima devi sospendere il processo con CTRL-Z mentre e' in primo piano, poi digita (sintassi da verificare con la pagina man di nohup):
    nohup -p PID &
    Il PID (process ID) del processo lo ricavi tramite il comando ps, eventualmente:
    ps -ef |grep comando

  9. #9
    Utente di HTML.it L'avatar di Crauto
    Registrato dal
    Jul 2002
    Messaggi
    61
    Quando lanci un programma, diciamo ./pippo il task sarà sempre figlio della shell da cui e partito, e ciò indipendentemente dal fatto che sia in background o no.
    Lo puoi notare con il comando ps, qualuque task ha un parent ID, che spesso corrisponde a quello della shell dalla quale è partito. Quindi se fai il kill della shell, farai altrettanto con tutti i suoi "figli".
    Il comando nohup serve a dire ad un task di prendersi come task padre il task init, quello con ID 1, un task molto speciale, che non ha parent.
    In questo modo se la shell viene killata lui può continare ad esistere.
    Ogni creatura dell’universo è in grado di distinguere il bene dal male, (cit. K-Pax)

  10. #10
    Utente di HTML.it L'avatar di untamed
    Registrato dal
    Sep 2004
    Messaggi
    830
    Io molto spesso mi trovo a programmare spegnimenti di alcune macchine prprio con ssh, do il comando in background (per esempio spegnimento in 30 minuti) e poi chiudo la sessione. Ma il processo rimane, infatti la macchina si spegne.
    Come mai?
    "La fede in una missione divina è una delle tante forme di certezza che hanno afflitto la razza umana." - Bertrand Russell

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.