Pagina 1 di 1
script per eseguire qcs allo scadere di un timeout...
Inviato: sab 17 nov 2007, 11:59
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...
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: sab 17 nov 2007, 12:16
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
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: sab 17 nov 2007, 12:22
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!
Inviato: sab 17 nov 2007, 14:37
da targzeta
Un bel:
no eh? troppo semplice?
Spina
Inviato: sab 17 nov 2007, 21:42
da Mario Vanoni
spina ha scritto:Un bel:
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
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: dom 18 nov 2007, 0:05
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
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: dom 18 nov 2007, 1:01
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?
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: dom 18 nov 2007, 1:01
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?
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: dom 18 nov 2007, 9:55
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...
Re: script per eseguire qcs allo scadere di un timeout...
Inviato: dom 18 nov 2007, 11:16
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?
Inviato: dom 18 nov 2007, 11:41
da Mario Vanoni
f1() {
...
}
oppure
function f1() {
...
}
Mario Vanoni
Inviato: dom 18 nov 2007, 11:45
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.
Inviato: dom 18 nov 2007, 11:51
da smtux
Mario Vanoni ha scritto:f1() {
...
}
oppure
function f1() {
...
}
Mario Vanoni
sinceramente avevo gia provato anche
ed avevo lo stesso risultato... il mio dubbio è busybox...
Inviato: dom 18 nov 2007, 12:54
da smtux
risolto...
era come dicevate voi -> problema di spazi!
non mi ero accorto di un spazio non lasciato... sorry!
Inviato: lun 19 nov 2007, 10:09
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