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

- 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...
Interpretando qcs come qualcosa,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...
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

- 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...
ok.. grazie.Mario Vanoni ha scritto:Interpretando qcs come qualcosa,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...
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
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!
- targzeta
- 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
Un bel:
no eh? troppo semplice?
Spina
Codice: Seleziona tutto
while [ 1 ];
do
echo "ciao";
sleep 1;
done
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
-
Mario Vanoni
- 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)
Semplice si`, ma usabile in production environment?spina ha scritto:Un bel:no eh? troppo semplice?Codice: Seleziona tutto
while [ 1 ]; do echo "ciao"; sleep 1; done
Spina
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
- masalapianta
- 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...
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.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...
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

- 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...
grazie mille della risposta...masalapianta ha scritto: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.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...
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
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
donefunction 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

- 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...
grazie mille della risposta...masalapianta ha scritto: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.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...
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
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
donefunction 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?
- Paoletta
- 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...
ti dice function not found perchè la sintassi è errata...dai un'occhiata a qualche guida on line di bash scripting...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:la cosa strana è che appena lancio lo script ottengoCodice: 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
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

- 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...
ho una guida di bash scripting sotto mano e risulta tutto corretto... dov'è che sbaglio?Paoletta ha scritto:ti dice function not found perchè la sintassi è errata...dai un'occhiata a qualche guida on line di bash scripting...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:la cosa strana è che appena lancio lo script ottengoCodice: 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
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?
-
Mario Vanoni
- 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)
- gioco
- Packager

- Messaggi: 900
- Iscritto il: dom 19 giu 2005, 0:00
- Slackware: last stable
- Località: in the court of the Wesnoth king
- Contatta:
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-
smtux
- Linux 3.x

- Messaggi: 977
- Iscritto il: gio 1 set 2005, 0:00
- Slackware: 12.0
- Località: somewhere in the time
sinceramente avevo gia provato ancheMario Vanoni ha scritto:f1() {
...
}
oppure
function f1() {
...
}
Mario Vanoni
Codice: Seleziona tutto
f1()
{
...
}
- targzeta
- 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
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?Mario Vanoni ha scritto:Semplice si`, ma usabile in production environment?
Concedimi il dubbio.
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama