Newsgroup: it.comp.os.linux.iniziare
Titolo: chiusura automatica della shell con TMOUT

TMOUT=10
 
e la shell si chiude automaticamente dopo 10 secondi di attività.
Ma in modo corretto (come quando si digita exit) o in modo forzato 
(scartando eventuali routine di shutdown comportando eventuali perdite 
di dati)?


Interessante domanda, se dovesse fare un'ipotesi
direi che fa un "exit".
Non vedo motivo di fare altro.
 
D'altro canto, sarebbe da provare qualcosa come:
 
TMOUT=10
sleep 20
 
E vedere quando termina e come...
 
bye,
 
-- 
 
piergiorgio

 sleep 20
 
TMOUT=5;sleep 20
 
Aspetta 20 secondi, poi altri 5 poi si chiude.
Ma a te come funziona?


Dalla man page di bash:
TMOUT	If set to a value greater than zero, TMOUT is treated as the
	default  timeout  for  the read builtin.  The select command
	terminates if input does not arrive after TMOUT seconds when
	input  is  coming from a terminal.  In an interactive shell,
	the value is interpreted as the number of  seconds  to  wait
	for  a line of input after issuing the primary prompt.  Bash
	terminates after waiting for that number  of  seconds  if  a
	complete line of input does not arrive.
 
Io interpreto che TMOUT setta un timout per le funzioni read e select, 
mentre in una shell interattiva la shell viene chiusa (exit) se allo 
scadere del t.o non arriva una linea completa di input.
 
$ lsodgf0@marina:~ > TMOUT=15 sh
$ lsodgf0@marina:~ > ls ,bashrc
ls: cannot access ',bashrc': No such file or directory
$ lsodgf0@marina:~ > timed out waiting for input: auto-logout
$ lsodgf0@marina:~ >
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >


Perfetto, vuol dire che segue propriamente
la man page.
 
Cioe`, se non c'e` input, dopo TMOUT esce, ma se
c'e` un processo che fa qualcosa (sleep) il time
out non avviene, quindi non termina impropriamente.
 
bye,
 
-- 
 
piergiorgio

 $ lsodgf0@marina:~ >
 
perfetto!!!

 out non avviene, quindi non termina impropriamente.
 
Quindi la cosa dovrebbe essere sicura.
Anche sarebbe bene avere anche altri tipi di sicurezza: shutdown 
annullato in caso di documenti aperti non salvati.

 annullato in caso di documenti aperti non salvati.
 
Come fa bash a sapere questo?
 
Semplicemente esce, mandando gli opportuni segnali
ai vari processi.
Saranno poi questi a decidere come morire.
 
Tra l'altro, se c'e` questo problema, cioe` processi
con dati pendenti, forse sarebbe meglio evitare di
usare un time out, ti pare?
 
bye,
 
-- 
 
piergiorgio

 usare un time out, ti pare?
 
Come già detto, lasciamo stare la shell, veniamo allo shutdown normale 
(che si innesca premendo il tasto power sul pc).
E' possibile che prima di spegnere devo stare sempre a controllare se ci 
sono cose aperte?
Quando usavo win non avevo queste paranoie (mi avvisava lui chiedendomi 
cosa fare)?
 

 cosa fare)?
 
Non e` affatto vero.
 
Anche con win era ed e` sempre il caso, se non altro
per sicurezza, di chiudere tutto prima di uscire.
 
Forse qualche applicativo, puo` darsi chieda cosa
fare (cosa peraltro potenzialmente fastidiosa).
In generale, pero`, mi e` successo che chiudesse
applicativi e perdesse i dati.
 
bye,
 
-- 
 
piergiorgio

 applicativi e perdesse i dati.
 
Quali applicativi usavi?
Sono curioso.

 Sono curioso.
 
Mah, e` successo, stranamente, con Firefox e con Word.
 
bye,
 
-- 
 
piergiorgio

 Mah, e` successo, stranamente, con Firefox e con Word.
 
Bah, a me word a sempre funzionato bene.
 
Firefox cosa dovrebbe salvare?
Cos'è, un editor?
o_O

 Cos'è, un editor?
 
La lista dei tab aperti.
 
bye,
 
-- 
 
piergiorgio

 La lista dei tab aperti.
 
Non chiudere quel libro perchè poi non riesco a trovare la pagina :D
E così difficile da recuperare una lista dei tab?
Quanti ne tieni aperti?
Io di solito tengo youtube, feedly, e una pagina si svago (chat, sport e 
cazzegi vari).
E poi queste sarebbero d'avvero cose da salvare?
Scommetto che pretendi di salvare anche la posizione del puntatore del 
mouse, l'allineamento delle icone, ecc. :D
Sembri Monk
https://www.youtube.com/watch?v=CCOMeI8Zq_c
 
 
C'è sempre da imparare :D

 E poi queste sarebbero d'avvero cose da salvare?
 
Ma cosa c'entra?
 
Il punto non e` se siano da salvare o meno per me,
ma il fatto che uno shutdown causa un comportamento
errato da parte del browser.
 
Quindi, anche in win, fare uno shutdown puo` causare
problemi.
 
Tra l'altro, visto che sei di buon umore :-), che
differenza ci sarebbe tra perdere un documento che
*non* si e` comunque salvato, o perdere la lista
dei tab aperti?
 
bye,
 
-- 
 
piergiorgio

 dei tab aperti?
 
Nessuna, tranne che per recuperare/rifare un doc da tre pagine ci vuole 
un'ora o più.
Per le tab anche meno di un minuto.
 
E dopo questo mi sa che per oggi può bastare :D

 E dopo questo mi sa che per oggi può bastare :D
 
Vabbe`, alla prossima.
Buona notte.
 
bye,
 
-- 
 
piergiorgio

 questo caso si sa cosa si stesse scrivendo.
 
????
E cmq mi pare che dici cose decisamente grottesche.
Buona giornata.


Mi intrometto nuovamente nella discussione anche se mi sembra che questa 
stia degenerando e stia partendo per la tangente.
 
Mi sembra che tu non abbia ancora capito la differenza fra la shell ed 
un programma in esecuzione.  Quando apri una shell interattiva questa 
diventa un semplice interpreter dei comandi digitati su di un terminale.
 
Quando si accorge di un comando lo decodifica, lo ricerca nel file 
system e gli passa il controllo fornendogli una serie di argomenti fra 
cui quelli passati sulla linea di comando e le variabili di environment.
 
La shell può anche essere usata come linguaggio di programmazione nel 
senso che puoi definire una serie di programmi da mandare in esecuzione 
in sequenza (od in parallelo) ed i programmi possono ricevere argomenti 
diversi od essere eseguiti in diverso ordine in funzione dei risultati 
dei programmi già eseguiti.  Ripeto, "può essere usata come linguaggio 
di programmazione" anche se rimane sempre un interpreter di comandi che, 
invece di essere letti in modo interattivo da un terminale, sono letti 
da un file ed eseguiti come descritto.
 
La shell, sia essa bash, csh, tcsh, ash, zsh, ksh (solo per citare 
quelle presenti nella mia distribuzione) ma anche cmd.exe di windows, 
rimane quindi sempre un interpreter di comandi ed assolutamente non ha 
niente da salvare e quando termina distrugge l'ambiente che si era 
creata all'avvio.
 
Tornando alla variabile TMOUT viene usata dall'interpreter per terminare 
la shell (interattiva) nel caso che *dopo il prompt* per il numero di 
secondi definito dalla variabile non riceva ulteriore input.  In uno 
script interpretato dalla shell non ha alcuna influenza perché i comandi 
vengono letti da un file senza mai un prompt.  TMOUT in una shell non 
interattiva ha una funzione solo se vi è un comando "read" (builtin 
della shell) e questo non riceve input.
 
Gli esempi che fai tu sono relativi ad un programma (editor ?) che, 
tipicamente, quando lo chiudi sa di avere uno o più file aperti e che 
alla richiesta di terminare gestisce correttamente quello che stai 
facendo.  Anche editor eseguiti sotto shell interattiva hanno questa 
funzionalità, ma è una funzionalità del programma non della shell.
Anche quei programmi non ti salveranno alcunché se fai un kill -SIGKILL 
o addirittura se togli la spina del computer.
 
La shell, quando termina, non ha niente da salvare.  Quando sarà 
riavviata inizializzerà tutto l'ambiente con nuovi valori (per bash 
interattiva vedi /etc/profile, /etc/profile.d/*, ~/.profile o 
~/.bash_login e ~/.bashrc).  Quando viene eseguita non interattivamente 
la shell riceve l'ambiente di chi la fa partire e se deve salvare 
qualcosa lo può fare sul file system o ritornare dei valori a chi 
l'avvia.  Se ha creato un ambiente temporaneo deve fare un cleanup e 
distruggere ciò che ha creato.


Il 22/05/2018 11:14, Giovanni ha scritto:
[...]
 
Avrei dovuto aprire un 3d a parte, ho sbagliato pesantemente.
Il risultato catastrofico è stato che questa shell non vi si leva dalla 
mente :D