[risolto]script in background

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
osser
Linux 0.x
Linux 0.x
Messaggi: 77
Iscritto il: mer 3 ott 2007, 16:31
Slackware: 14.2
Kernel: 4.4.14
Desktop: xfce

[risolto]script in background

Messaggio da osser »

mi scuso per la domanda da niubbo ma vorrei eseguire
lo script che ho chiamato men.sh in background

Codice: Seleziona tutto

#!/bin/bash
# men.sh
mencoder file_uno
mencoder file_due
mencoder file_tre
Ultima modifica di osser il sab 18 lug 2009, 16:26, modificato 1 volta in totale.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script in background

Messaggio da Mario Vanoni »

osser ha scritto:mi scuso per la domanda da niubbo ma vorrei eseguire
lo script che ho chiamato men.sh in background

Codice: Seleziona tutto

#!/bin/bash
# men.sh
mencoder file_uno
mencoder file_due
mencoder file_tre
Specifica meglio:

- non-stop finche' e` accesa la macchina (mem.sh &)
- ad intervalli regolari [usando crontab(1)]

Avatar utente
osser
Linux 0.x
Linux 0.x
Messaggi: 77
Iscritto il: mer 3 ott 2007, 16:31
Slackware: 14.2
Kernel: 4.4.14
Desktop: xfce

Re: script in background

Messaggio da osser »

Grazie Mario per la risposta pronta, allora vorrei
non-stop finche' e` accesa la macchina.
Ho aperto una console ed eseguito quello che mi ha suggerito:
bash-3.1$ mem.sh &
ma resta interattivo cioè la console è impegnata.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: script in background

Messaggio da d4z_c0nf »

osser ha scritto:Grazie Mario per la risposta pronta, allora vorrei
non-stop finche' e` accesa la macchina.
Ho aperto una console ed eseguito quello che mi ha suggerito:
bash-3.1$ mem.sh &
ma resta interattivo cioè la console è impegnata.
E' impegnata nel senso che è impegnato lo standard output, il tuo script scrive qualcosa sullo standard output e quindi viene visualizzato, in ogni caso tu puoi usarla, ad esempio puoi uscirne senza interrompere lo script con

Codice: Seleziona tutto

exit
Oppure puoi lanciare lo script, se non ti interessa vedere l'output del tuo script, redirezionando l'output verso /dev/null o verso un file, vedi tu..

Codice: Seleziona tutto

mem.sh > /dev/null &
rock

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: script in background

Messaggio da Mario Vanoni »

osser ha scritto:Grazie Mario per la risposta pronta, allora vorrei
non-stop finche' e` accesa la macchina.
Ho aperto una console ed eseguito quello che mi ha suggerito:
bash-3.1$ mem.sh &
ma resta interattivo cioè la console è impegnata.
Problema che mandi info su stdout e/o stderr.
Se mem.sh e` taciturno funziona.

Prova top &
con
fg
torna visibile e lo chiudi.

Avatar utente
osser
Linux 0.x
Linux 0.x
Messaggi: 77
Iscritto il: mer 3 ott 2007, 16:31
Slackware: 14.2
Kernel: 4.4.14
Desktop: xfce

Re: [risolto]script in background

Messaggio da osser »

E' impegnata nel senso che è impegnato lo standard output, il tuo script scrive qualcosa sullo standard output e quindi viene visualizzato, in ogni caso tu puoi usarla, ad esempio puoi uscirne senza interrompere lo script con

Codice: Seleziona tutto

exit
Avevo un po' paura a scrivere exit e a dare invio senza leggere nulla ma con:
exit
ho risolto, grazie anche a d4z_c0nf
Ultima modifica di osser il sab 18 lug 2009, 16:48, modificato 3 volte in totale.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: [risolto]script in background

Messaggio da conraid »

oppure usa screen

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: [risolto]script in background

Messaggio da Mario Vanoni »

osser ha scritto:E' impegnata nel senso che è impegnato lo standard output, il tuo script scrive qualcosa sullo standard output e quindi viene visualizzato, in ogni caso tu puoi usarla, ad esempio puoi uscirne senza interrompere lo script con

Codice: Seleziona tutto

exit
Avevo un po' paura a scrivere exit e a dare invio senza leggere nulla ma con:
exit
ho risolto, grazie anche a d4z_c0nf
Hai veramente risolto?

top &
exit
e top e` morto.

Avevo capito che
men.sh
doveva girare fino al powerdown.

Se scrive i risultati anche su un file
men.sh > /dev/null 2>&1 &

se scrive solo su stdout, e vuoi tenere i risultati
men.sh >> /path/file 2>&1 &

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: [risolto]script in background

Messaggio da d4z_c0nf »

Mario Vanoni ha scritto:
osser ha scritto:E' impegnata nel senso che è impegnato lo standard output, il tuo script scrive qualcosa sullo standard output e quindi viene visualizzato, in ogni caso tu puoi usarla, ad esempio puoi uscirne senza interrompere lo script con

Codice: Seleziona tutto

exit
Avevo un po' paura a scrivere exit e a dare invio senza leggere nulla ma con:
exit
ho risolto, grazie anche a d4z_c0nf
Hai veramente risolto?

top &
exit
e top e` morto.
Hai ragione Mario, se usi quella cosa con top, top muore.
Provando invece con uno script tipo:

Codice: Seleziona tutto

i=0
while (( i < 100000000 )); do
  echo "pippo"
  i=$((i+1))
done
Continua..
Strano comportamento di top, deve esserci qualche motivo "interno".
rock

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: [risolto]script in background

Messaggio da targzeta »

Per non killare i processi con l'exit normalmente basta il comando nohup(1)

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
davide77
Linux 2.x
Linux 2.x
Messaggi: 359
Iscritto il: mar 26 apr 2005, 0:00
Desktop: xfce
Distribuzione: XUbuntu
Località: Bergamo

Re: [risolto]script in background

Messaggio da davide77 »

spina ha scritto:Per non killare i processi con l'exit normalmente basta il comando nohup(1)
Giusto per dovere di cronaca: se lanci un comando in background rimane figlio della shell che lo ha lanciato e viene interrotto quando la shell viene chiusa (manda un segnale di HUP ai processi figli), se lo lanci preceduto dal comando nohup il segnale di chiusura viene "bypassato", lasciando il processo attivo nonostante il padre sia stato chiuso. 8) :lol:

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: [risolto]script in background

Messaggio da joe »

Anche io mi sono fatto degli script "demoniaci" che se ne stanno dietro le quinte e il problema era proprio quello di lanciarli e chiudere la shell senza che questi morissero (in quanto figli della shell stessa). Fortunatamente la bash mette a disposizione il comando "disown" che trancia questa gerarchia.
perticamente lanci:

pippo.sh 2>/path/to/logfile 1>/path/to/outputfile & disown %1

Questo vale se pippo.sh è il "primo" job in background per quella shell. In questo modo e facile mandare tutto in background e staccare la shell dal processo. Sinceramente non so se poi in uqlalche modo sia possibile riagganciare il processo ad una shell e riportarlo in foreground...un poì come si fa con "screen -r".
Però sinceramente a me non è mai servito perche si trattava proprio di script pensati per starsente in bg....però se ci fosse qualche possibilità di farlo e ne foste a conoscenza, non mi dispiacerebbe sapere come si fà.
Io normalmente utilizzo screen per gestire una sessione di lavoro con diverse shell:

screen -S nomesessione
"ctrl-a + c" per creare una nuova shell...
ctrl-a + d per staccare tutta la sessione dal terminale da cui si è lanciata (va tutto in background e si può anche adirittura eseguire il logout.
Poi si può ritornare su un terminale qualsiasi (sia da X che da sessione testuale) e riagganciare la sessione screen:

screen -r nomesessione

Il "nomesessione" non è sempre necessario, ma può essere utile se si hanno in piedi più sessioni screen contemporaneamente.

Rispondi