View previous topic :: View next topic |
Author |
Message |
fat_penguin Apprentice
Joined: 25 Jul 2004 Posts: 294 Location: sud side of Switzerland
|
Posted: Sat Dec 11, 2004 3:49 pm Post subject: [TIP] Screen: mettere i processi in background |
|
|
Spesso mi capita di dover lanciare dei lunghi processi su macchine remote. Se mi collego con ssh e lancio il programma con "&" , al momento della chiusura della sessione ssh, il pocesso si interrompe.
Ho quindi iniziato ad usare screen che permette di mettere in background i processi, di chiudere la sessione terminale attuale e di riprenderla successivamente.
Ecco il dafarsi (sulla macchina remota):
Ora per lanciare un qualsiasi processo si segue la sintassi:
Code: | screen nomeprocesso |
ad esempio
Code: | screen emerge -u world |
Il processo quindi inizia! Se ora lo voglio mettere in backgound devo semplicemente dare la sequeza di tasti
Code: | ctrl+a (successivamente) d |
Ora il processo risulta nascosto. Possiamo vedere lo stato con
A questo punto possiamo tranquillamente chiudere la sessione terminale (ssh o semplicemente la nostra shell locale).
Riaprendo una sessione possiamo con ritrovarci il processo in piena attività!
Se abbiamo messo piu processi in background dobbiamo richiamrli in base al pid assegnato da screen ( screen -ls) con
Code: | screen -r numero_pid |
Nel man di "screen" si possono scoprire diverse cose interessanti!
Una nota: quando si lancia un processo con screen vale forse la pena di redirezionare lo standard output in modo che se il processo termina prima del "riaggancio" si possono visualizzare eventuali messaggi o errori del processo stesso. L'opzione da usare in questo caso è "-L".
byebye
fat_penguin |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 30905 Location: here
|
Posted: Sat Dec 11, 2004 3:54 pm Post subject: |
|
|
Ottimo tip sara' messo nei post utilissimi. Se ne parlava da molto ma mancava una guida _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
ProT-0-TypE Veteran
Joined: 20 Dec 2003 Posts: 1624 Location: Cagliari
|
Posted: Sat Dec 11, 2004 4:00 pm Post subject: |
|
|
io creo le sessione di screen con:
Code: | screen -S nomesessione |
in modo che sia più comodo riaprire le sezioni staccate ricordandosi il nome.
Per riaprire do semplicemente un:
Code: | screen -r nomesessione |
Last edited by ProT-0-TypE on Sun Oct 09, 2005 10:37 am; edited 1 time in total |
|
Back to top |
|
|
wildancer Guru
Joined: 02 Apr 2004 Posts: 472
|
Posted: Mon Jun 06, 2005 11:05 pm Post subject: |
|
|
MH, ma non bastava l'onnipresente nohup? se ridirezioni l'output poi puoi leggerlo con tail -f... screen cosa offre in piu?
Code: | # nohup emerge -uD world >& emerge.log |
e se ti logghi e ps aux | grep emerge ti dice che ancora non hai finto per avere l'output
Code: | # tail -f emerge.log |
|
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Sun Oct 09, 2005 12:25 pm Post subject: |
|
|
posto qui perchè il mio thread è stato chiuso...
scusate, con tutte le shell che esistono non ho mai sentito parlare di qyesto "screen"... possibile che nessuna delle shell storiche di unix consenta di lanciare processi in background senza che vengano killati insieme al processo padre (la shell appunto)... |
|
Back to top |
|
|
lopio Veteran
Joined: 22 Dec 2003 Posts: 1161 Location: savona, Italy
|
Posted: Sun Oct 09, 2005 12:35 pm Post subject: |
|
|
soigres wrote: | posto qui perchè il mio thread è stato chiuso...
scusate, con tutte le shell che esistono non ho mai sentito parlare di qyesto "screen"... possibile che nessuna delle shell storiche di unix consenta di lanciare processi in background senza che vengano killati insieme al processo padre (la shell appunto)... | h
come si diceva sopra il comando nohup consente di sganciare padre e figlio e poter avviare un processo da macchina remota (per esempio via telnet) e chiudere la connessione senza che cio' che si e' lanciato venga terminato.
Una ulteriore considerazione potrebbe essere quella di far catturare e ignorare i segnali che un processo riceve tramite comando trap.
Se la shell padre per esempio invia segnale X al figlio che non catturandolo viene ucciso allora conviene dire al figlio di catturare ed ignorare tale SIG tramite comando trap per il segnale X inserito in testa al file. |
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Sun Oct 09, 2005 12:45 pm Post subject: |
|
|
in altro thread (chiusomi!) cercavo un'alternativa a bash (un'altra shell, non un comando palliativo) e chiedevo se qualcuna delle altre shell che esistono (non vorrei provarle tutte per saperlo ) fa questo di default... per esempio zsh o tutte le varie sh di unix
grazie |
|
Back to top |
|
|
wildancer Guru
Joined: 02 Apr 2004 Posts: 472
|
Posted: Sun Oct 09, 2005 5:06 pm Post subject: |
|
|
Se ci spiechi cosa cerchi magari ti aiutiamo, fammi capire però, dato che qui è ot la scelta di una shell differente, perche il tuo 3d è stato chiuso? In linea di massima comunque sappi che tutt le caratteristiche di altre shell bash le ha, l'unico motivo per cambiarla è che non ne usi nessuna
(tipo che per ripetere un comando anche se l'hai digitato 2 comandi prima, fai
e poi
)
e che ne vuoi una più leggera, a quel punto c'è ash! |
|
Back to top |
|
|
GiRa l33t
Joined: 07 Apr 2005 Posts: 717
|
Posted: Sun Oct 09, 2005 5:18 pm Post subject: |
|
|
Forse nohup è un comando interno di bash.
|
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Sun Oct 09, 2005 11:00 pm Post subject: |
|
|
scusate, so di essere un casinista percui mi spiegherò di nuovo: sto cercando, se esiste, una shell che, una volta chiusa (in un window manager per esempio), non vengano chiusi insieme a lei anche tutti i processi che sono stati aperti tramite una sessione di questa shell.
es. sono in fvwm, con aterm aperto e shell bash... digito "opera" poi chiuso aterm... allo stato attuale mi si chiuderebbe anche la finestra di opera... sto cercando una shell che non causi questi inconvenienti
ps. non sono sicuro che sia un problema della shell quindi cazziatemi pure se sto dicendo castronerie!! |
|
Back to top |
|
|
skakz Guru
Joined: 03 Jul 2004 Posts: 380 Location: Ischia/Napoli/Italia/Terra
|
Posted: Sun Oct 09, 2005 11:06 pm Post subject: |
|
|
soigres wrote: | scusate, so di essere un casinista percui mi spiegherò di nuovo: sto cercando, se esiste, una shell che, una volta chiusa (in un window manager per esempio), non vengano chiusi insieme a lei anche tutti i processi che sono stati aperti tramite una sessione di questa shell.
es. sono in fvwm, con aterm aperto e shell bash... digito "opera" poi chiuso aterm... allo stato attuale mi si chiuderebbe anche la finestra di opera... sto cercando una shell che non causi questi inconvenienti
ps. non sono sicuro che sia un problema della shell quindi cazziatemi pure se sto dicendo castronerie!! |
prova con
_________________ Linux Registered User n.340423
Linux User Group Ischia
www.tush.it |
|
Back to top |
|
|
ProT-0-TypE Veteran
Joined: 20 Dec 2003 Posts: 1624 Location: Cagliari
|
Posted: Sun Oct 09, 2005 11:14 pm Post subject: |
|
|
questo thread è entrato in loop
nohup -> shell particolare -> nohup -> shell particolare -> nohup... _________________ [Vuoi guadagnare navigando?] |
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Sun Oct 09, 2005 11:15 pm Post subject: |
|
|
ProT-0-TypE wrote: | questo thread è entrato in loop
nohup -> shell particolare -> nohup -> shell particolare -> nohup... | esatto, ma nessuno mi risponde ancora: tra zsh, csh, tcsh, ecc ecc esiste una che faccia quanto descritto sopra senza uso di comandi come "nohup"???? |
|
Back to top |
|
|
neon l33t
Joined: 04 Aug 2003 Posts: 759 Location: Catania, Italy, Europe
|
Posted: Sun Oct 09, 2005 11:39 pm Post subject: |
|
|
soigres wrote: | ma nessuno mi risponde ancora: tra zsh, csh, tcsh, ecc ecc esiste una che faccia quanto descritto sopra senza uso di comandi come "nohup"???? |
Non credo sia un comportamento "normale" per una shell e' per questo che si usa nohup (che e' un comando posix e non interno a bash)
edit: effettivamente ho detto una ca**a*a =) pare che la csh si comporti diversamente...
http://www.univ.trieste.it/~nircdc/doc/oldunix/DUpro.12.4.html
edit2: fammi indovinare questo sbattimento e' per la vilitudine di non specificare nohup prima di avviare i programmi??? hai pensato ad un alias? _________________ Io credo che le tecnologie siano moralmente neutrali fino a quando non le utilizziamo - William Gibson
LINEE GUIDA DEL FORUM |
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Sun Oct 09, 2005 11:59 pm Post subject: |
|
|
neon wrote: | soigres wrote: | ma nessuno mi risponde ancora: tra zsh, csh, tcsh, ecc ecc esiste una che faccia quanto descritto sopra senza uso di comandi come "nohup"???? |
Non credo sia un comportamento "normale" per una shell e' per questo che si usa nohup (che e' un comando posix e non interno a bash)
edit: effettivamente ho detto una ca**a*a =) pare che la csh si comporti diversamente...
http://www.univ.trieste.it/~nircdc/doc/oldunix/DUpro.12.4.html
edit2: fammi indovinare questo sbattimento e' per la vilitudine di non specificare nohup prima di avviare i programmi??? hai pensato ad un alias? | mitico!!! adesso però devi spiegarmi come si fa a fare un alias che faccia partire tutti i processi con "nohup" prima (oppure intendi fare un alias per ciascun programma lanciato da terminale???) |
|
Back to top |
|
|
neon l33t
Joined: 04 Aug 2003 Posts: 759 Location: Catania, Italy, Europe
|
Posted: Mon Oct 10, 2005 12:12 am Post subject: |
|
|
effettivamente non si puo' creare un alias per ogni programma, bisognerebbe modificare l'input preso da bash prima che venga eseguito, come fare di preciso non saprei...
Di utile ho scoperto il comando "disown -h" di bash, mi resta solo da capire come settare in disown di default per tutti i programmi eseguiti da bash (ci siamo quasi)
edit:
Code: | huponexit
If set, Bash will send SIGHUP to all jobs when an interactive
login shell exits. |
shopt huponexit: nella mia bash e' off di default... ma manda il SIGHUP lo stesso.
edit2: allora... per ora ho trovato la seguente soluzione: metti Code: | PROMPT_COMMAND='disown -ah' | in .bashrc ed esegui i programmi con nome&, meglio di niente... _________________ Io credo che le tecnologie siano moralmente neutrali fino a quando non le utilizziamo - William Gibson
LINEE GUIDA DEL FORUM |
|
Back to top |
|
|
soigres l33t
Joined: 09 Dec 2004 Posts: 648 Location: Milano, Italy
|
Posted: Mon Oct 10, 2005 7:22 am Post subject: |
|
|
ok... buona soluzione!
altrimenti mi sa che proverò la shell tcsh! |
|
Back to top |
|
|
|