script per eseguire qcs allo scadere di un timeout...

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
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
smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

script per eseguire qcs allo scadere di un timeout...

Messaggio da smtux »

Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...

che dite potrei usare anche solo shell scripting?

grazie per suggerimenti...

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 per eseguire qcs allo scadere di un timeout...

Messaggio da Mario Vanoni »

smtux ha scritto:Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...

che dite potrei usare anche solo shell scripting?

grazie per suggerimenti...
Interpretando qcs come qualcosa,
fai un bourne shell script, non usando le estensioni di bash.
Cosi` lo script e` sempre usabile su tutti i sistem *IX.
Lo metti in rc.local per l'avvio, in crontab (ogni minuto).
Se proprio deve girare ogni secondo, calcola lo spreco di CPU.
In questo caso scriviti un demone in C, esempi ce ne sono tanti,
e quello ti esegue i tuo script all'intervallo voluto.

Mario Vanoni

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da smtux »

Mario Vanoni ha scritto:
smtux ha scritto:Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...

che dite potrei usare anche solo shell scripting?

grazie per suggerimenti...
Interpretando qcs come qualcosa,
fai un bourne shell script, non usando le estensioni di bash.
Cosi` lo script e` sempre usabile su tutti i sistem *IX.
Lo metti in rc.local per l'avvio, in crontab (ogni minuto).
Se proprio deve girare ogni secondo, calcola lo spreco di CPU.
In questo caso scriviti un demone in C, esempi ce ne sono tanti,
e quello ti esegue i tuo script all'intervallo voluto.

Mario Vanoni
ok.. grazie.

qcs per me è un messaggio ad un altro pc in rete.. per esempio.
dove lo posso trovare un esempio di demone c come dici?
non volevo usare crontab...

grazie ancora!

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

Messaggio da targzeta »

Un bel:

Codice: Seleziona tutto

while  [ 1 ]; 
 do 
   echo "ciao"; 
   sleep 1; 
 done
no eh? troppo semplice?

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

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)

Messaggio da Mario Vanoni »

spina ha scritto:Un bel:

Codice: Seleziona tutto

while  [ 1 ]; 
 do 
   echo "ciao"; 
   sleep 1; 
 done
no eh? troppo semplice?

Spina
Semplice si`, ma usabile in production environment?
Concedimi il dubbio.

Michael W. Shafer, scomparso dall'internet, ha scritto diversi codici sotto GPL:

ssync-2.3.tar.gz , lo uso invariato dal 2002 in ditta ed in privato,
ancora trovabile in internet sui siti *BSD, che continuano a curarlo/usarlo.

peerd-1.0.tar.gz, datato 2001-12-22, un demone molto governabile
con un file peerd.conf, con 5 possibilita` di intervento.
Sull'internet lo si trova ancora citato, ma i download non funzionano.

Ho una copia, la mando a chi la richiede.

Mario Vanoni

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da masalapianta »

smtux ha scritto:Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...
non e' ben chiaro cosa tu stia chiedendo; non ho capito se vuoi che il demone lanci lo script ad intervalli di un secondo da quando termina lo script a quando viene rilanciato o se vuoi che venga lanciato a intervalli di un secondo, in quest'ultimo caso dovresti specificare se il demone deve forkare un figlio per lanciare lo script e fregarsene di quanto tempo ci mette a terminarne l'elaborazione (lanciando lo script dopo un secondo anche se quello lanciato precedentemente sta ancora girando) oppure lo deve lanciare senza forkare e se l'elaborazione dura piu' d'un secondo debba interromperla e procedere al successivo lancio dello script.
Nel primo caso ti basta quanto segue:

perl -e 'use POSIX qw(setsid); use strict; my $pid = fork(); exit if $pid; setsid; chdir "/"; close STDIN; open STDERR,">>/var/log/logdelcosocheesegueloscript.err"; print "pid: $$\n"; close STDOUT; while() { system("/path/to/scriptdaeseguire"); sleep 1;}'

nel secondo caso ti basta mandare in background lo script lanciato con la system oppure forkare nel while e lanciare la system nel figlio; nel terzo caso puoi usare alarm() per impostare il timeout d'un secondo e poi gestire la terminazione della precedente elaborazione dello script tramite un handler impostato per SIGALRM.
Per quanto riguarda il discorso di usare un demone in C, e' poco utile in questo caso, in quanto dovendo solo lanciare delle system a intervalli regolari il guadagno che si ha e' irrilevante, btw se ti piace farlo in C e' abbastanza semplice:
http://www.enderunix.org/documents/eng/daemon.php
Ultima modifica di masalapianta il dom 18 nov 2007, 0:18, modificato 1 volta in totale.

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da smtux »

masalapianta ha scritto:
smtux ha scritto:Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...
non e' ben chiaro cosa tu stia chiedendo; non ho capito se vuoi che il demone lanci lo script ad intervalli di un secondo da quando termina lo script a quando viene rilanciato o se vuoi che venga lanciato a intervalli di un secondo, in quest'ultimo caso dovresti specificare se il demone deve forkare un figlio per lanciare lo script e fregarsene di quanto tempo ci mette a terminarne l'elaborazione (lanciando lo script dopo un secondo anche se quello lanciato precedentemente sta ancora girando) oppure lo deve lanciare senza forkare e se l'elaborazione dura piu' d'un secondo debba interromperla e procedere al successivo lancio dello script.
Nel primo caso ti basta quanto segue:

perl -e 'use POSIX qw(setsid); use strict; my $pid = fork(); exit if $pid; setsid; chdir "/"; close STDIN; open STDERR,">>/var/log/logdelcosocheesegueloscript.err"; print "pid: $$\n"; close STDOUT; while() { system("/path/to/scriptdaeseguire"); sleep 1;}'

nel secondo caso ti basta mandare in background lo script lanciato con la system oppure forkare nel while e lanciare la system nel figlio; nel terzo caso puoi usare alarm() per impostare il timeout d'un secondo e poi gestire la terminazione della precedente elaborazione dello script tramite un handler impostato per SIGALRM.
Per quanto riguarda il discorso di usare un demone in C, e' poco utile in questo caso, in quanto dovendo solo lanciare delle system a intervalli regolari il guadagno che si ha e' irrilevante, btw se ti piace farlo in C e' abbastanza semplice:
http://www.enderunix.org/documents/eng/daemon.php
grazie mille della risposta...

nel frattempo mi sono scritto un script di shell.
Infatti quello di cui ho bisogno è che un script giri di continuo ... ripensandoci mi sono accorto che le elaborazioni non durano sempre lo stesso tempo.
Oltretutto sarebbe sufficente che quando è finita la prima inizi la seconda e così via.. quindi un script do shell andrebbe più che bene...
Tale script gira su un target con busybox... e qui mi sa che ho delle grane infatti ho scritto
qcs del genere:

Codice: Seleziona tutto

#!/bin/sh

function f1 {
	if["$a" != "$b"];then
		prev_a=$a	
		echo "First"
	else
		echo "Second"	
	fi
}

while [1];do	
	echo "Running"
	#Call function 
	f1
done
la cosa strana è che appena lancio lo script ottengo
function not found alla riga in cui inizia la dichiarazione di f1... poi non vedo mai stampato Running da cui deduco che non entra mai nel while...

come posso fare?

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da smtux »

masalapianta ha scritto:
smtux ha scritto:Salve,

vorrei realizzare uno script che ogni secondo la mia linuxbox esegue qcs... per fare questo sono combattuto, nel senso vorrei impostarlo su due livelli:
un script in perl che all'avvio del pc viene eseguito in background e che ogni secondo richiama uno script di shell...
non e' ben chiaro cosa tu stia chiedendo; non ho capito se vuoi che il demone lanci lo script ad intervalli di un secondo da quando termina lo script a quando viene rilanciato o se vuoi che venga lanciato a intervalli di un secondo, in quest'ultimo caso dovresti specificare se il demone deve forkare un figlio per lanciare lo script e fregarsene di quanto tempo ci mette a terminarne l'elaborazione (lanciando lo script dopo un secondo anche se quello lanciato precedentemente sta ancora girando) oppure lo deve lanciare senza forkare e se l'elaborazione dura piu' d'un secondo debba interromperla e procedere al successivo lancio dello script.
Nel primo caso ti basta quanto segue:

perl -e 'use POSIX qw(setsid); use strict; my $pid = fork(); exit if $pid; setsid; chdir "/"; close STDIN; open STDERR,">>/var/log/logdelcosocheesegueloscript.err"; print "pid: $$\n"; close STDOUT; while() { system("/path/to/scriptdaeseguire"); sleep 1;}'

nel secondo caso ti basta mandare in background lo script lanciato con la system oppure forkare nel while e lanciare la system nel figlio; nel terzo caso puoi usare alarm() per impostare il timeout d'un secondo e poi gestire la terminazione della precedente elaborazione dello script tramite un handler impostato per SIGALRM.
Per quanto riguarda il discorso di usare un demone in C, e' poco utile in questo caso, in quanto dovendo solo lanciare delle system a intervalli regolari il guadagno che si ha e' irrilevante, btw se ti piace farlo in C e' abbastanza semplice:
http://www.enderunix.org/documents/eng/daemon.php
grazie mille della risposta...

nel frattempo mi sono scritto un script di shell.
Infatti quello di cui ho bisogno è che un script giri di continuo ... ripensandoci mi sono accorto che le elaborazioni non durano sempre lo stesso tempo.
Oltretutto sarebbe sufficente che quando è finita la prima inizi la seconda e così via.. quindi un script do shell andrebbe più che bene...
Tale script gira su un target con busybox... e qui mi sa che ho delle grane infatti ho scritto
qcs del genere:

Codice: Seleziona tutto

#!/bin/sh

function f1 {
	if["$a" != "$b"];then
		prev_a=$a	
		echo "First"
	else
		echo "Second"	
	fi
}

while [1];do	
	echo "Running"
	#Call function 
	f1
done
la cosa strana è che appena lancio lo script ottengo
function not found alla riga in cui inizia la dichiarazione di f1... poi non vedo mai stampato Running da cui deduco che non entra mai nel while...

come posso fare?

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da Paoletta »

smtux ha scritto:Tale script gira su un target con busybox... e qui mi sa che ho delle grane infatti ho scritto
qcs del genere:

Codice: Seleziona tutto

#!/bin/sh

function f1 {
	if["$a" != "$b"];then
		prev_a=$a	
		echo "First"
	else
		echo "Second"	
	fi
}

while [1];do	
	echo "Running"
	#Call function 
	f1
done
la cosa strana è che appena lancio lo script ottengo
function not found alla riga in cui inizia la dichiarazione di f1... poi non vedo mai stampato Running da cui deduco che non entra mai nel while...

come posso fare?
ti dice function not found perchè la sintassi è errata...dai un'occhiata a qualche guida on line di bash scripting...

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Re: script per eseguire qcs allo scadere di un timeout...

Messaggio da smtux »

Paoletta ha scritto:
smtux ha scritto:Tale script gira su un target con busybox... e qui mi sa che ho delle grane infatti ho scritto
qcs del genere:

Codice: Seleziona tutto

#!/bin/sh

function f1 {
	if["$a" != "$b"];then
		prev_a=$a	
		echo "First"
	else
		echo "Second"	
	fi
}

while [1];do	
	echo "Running"
	#Call function 
	f1
done
la cosa strana è che appena lancio lo script ottengo
function not found alla riga in cui inizia la dichiarazione di f1... poi non vedo mai stampato Running da cui deduco che non entra mai nel while...

come posso fare?
ti dice function not found perchè la sintassi è errata...dai un'occhiata a qualche guida on line di bash scripting...
ho una guida di bash scripting sotto mano e risulta tutto corretto... dov'è che sbaglio?

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)

Messaggio da Mario Vanoni »

f1() {
...
}
oppure
function f1() {
...
}

Mario Vanoni

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio da gioco »

Codice: Seleziona tutto

#!/bin/sh

function f1 {
   if [ "$a" != "$b" ]; then
      prev_a=$a   
      echo "First"
   else
      echo "Second"   
   fi
}

while [ 1 ];do
   echo "Running"
   #Call function
   f1
done
Gli spazi sono mandatori.

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Messaggio da smtux »

Mario Vanoni ha scritto:f1() {
...
}
oppure
function f1() {
...
}

Mario Vanoni
sinceramente avevo gia provato anche

Codice: Seleziona tutto

f1()
{
...
}

ed avevo lo stesso risultato... il mio dubbio è busybox...

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Messaggio da smtux »

risolto...
era come dicevate voi -> problema di spazi!
non mi ero accorto di un spazio non lasciato... sorry!

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

Messaggio da targzeta »

Mario Vanoni ha scritto:Semplice si`, ma usabile in production environment?
Concedimi il dubbio.
Tutto dipende da quello che uno se ne deve fare. Come si dice:"E' inutile usare una bomba atomica per uccidere una formica", ti pare?

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

Rispondi