[Risolto] shutdown al termine di un comando

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.
robertobartola
Linux 0.x
Linux 0.x
Messaggi: 9
Iscritto il: gio 15 gen 2009, 12:38
Nome Cognome: Roberto Bartola
Slackware: 12.1
Kernel: 2.6.24.5
Desktop: kde

Re: shutdown al termine di un comando

Messaggio da robertobartola »

Grazie a tutti!

Credo che in particolare Spina e ZeD abbiano capito cio' che non ero riuscito a spiegare bene.

Ho provato le due soluzioni e sono molto interessanti.

Infatti ho gia' visto e messo in uso il

Codice: Seleziona tutto

# lievemente corretto
    $> comando_lungo
    [CTRL-Z]
    [1]+ Stopped
    $> bg
    [1]+ comando_lungo &
    $> wait %1 && shutdown -h now
Credo che questa sia la soluzione definitiva.

Ora bisognerebbe capire se per caso esiste la possibilita' di mappare un tasto per cui alla sua pressione si abbia gia' tutto cio', ma forse non e' possibile
(esempio.

Codice: Seleziona tutto

[CTRL-P] = [CTRL-Z] + bg + wait %1 && shutdown -h now
)
Ciao Roberto

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: shutdown al termine di un comando

Messaggio da targzeta »

robertobartola ha scritto:...
Ora bisognerebbe capire se per caso esiste la possibilita' di mappare un tasto per cui alla sua pressione si abbia gia' tutto cio', ma forse non e' possibile
(esempio.

Codice: Seleziona tutto

[CTRL-P] = [CTRL-Z] + bg + wait %1 && shutdown -h now
)
...
Il problema è che mentre un comando è in foreground arriva tutto a lui (tramite il suo terminale associato). Quindi qualsiasi cosa tu assegni a CTRL-P questo viene spedito al processo in foreground, a meno che tu non possa indicare al terminale di inviarlo alla bash, ma non ho idea di come si possa fare :).

Spina

P.S. Però attraverso la sequenza CRTL-Z, CTRL-\ è possibile. Basta dire alla bash, che prende possesso del terminale alla pressione di CTRL-Z, di gestire il segnale SIGQUIT (che la bash non gestisce e che viene inviato generlmente tramite CTRL-\ di default, ma lo puoi impostare anche a CTRL-P se vuoi). Per fare questo guarda il man della bash(1) e cerca il comando interno trap.
Ecco un esempio:

Codice: Seleziona tutto

trap "bg; wait %$(jobs | sed -n '/+/{s/\[\([[:digit:]]*\).*/\1/;p}'); echo casa" SIGQUIT
Dopo aver dato questo comando, prova ad eseguire un comando e poi a premere CTRL-Z (per tornare alla bash) e CTRL-\. Manderai il processo in background e ti metterai ad aspettare la sua conclusione. A processo concluso stampera "casa".
Ovviamente per rendere il tutto automatico devi inserire il comando trap all'interno del file ~/.bash_profile, ad esempio.
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi