ads

Iscriviti subito a BannerPromotion.it

sabato 18 ottobre 2008

Shell scripting e Crontab shots

Premetto l'utilizzo di Bash, quindi il tutto è relativo a questo tipo di shell.
La prima cosa importantissima che ho scoperto proprio ieri è che, in uno script, una funzione ricorsiva NON utilizza uno stack per le variabili, quindi tutte le variabili che non siano i parametri di input (per intenderci quelle identificate con $1, $2, ecc) non verranno ripristinate al valore che avevano alla chiamata precedente. Può essere un po' contorto (anche solo capire cosa voglio dire) ma spero che capito almeno il concetto.

L'operazione di elevamento a potenza è possibile tramite l'operando "**" (senza virgolette) utilizzato nel comando "let"

Le crontab consentono di lanciare un programma/comando/insieme di comandi (script) ad un giorno, ora, minuto, ecc predeterminati. Dato che il comando viene lanciato in background, se si volesse lanciare un'applicazione grafica quindi, non si saprebbe quale schermo utilizzare, e così l'output su schermo andrebbe perso; per ovviare a questo problema si deve aggiungere, prima di ogni comando che preveda il lancio di una finestra a schermo, la stringa:

env DISPLAY=:0.0

che "dice" all'applicazione quale sia lo schermo su cui attivarsi.

Sempre le crontab potrebbero avere problemi a risolvere alias quindi può essere buona norma usare comandi con il loro path completo: cioè non lanciare "firefox" ma "/usr/bin/firefox".
Più semplicemente si può utilizzare la command substitution con "which":

`which firefox`

che, racchiuso tra apici rovesci, restituisce il path assoluto del comando firefox e avrà lo stesso effetto della chamata a "/usr/bin/firefox".
Concludendo, per far eseguire firefox da crontab sarà necessario eseguire la seguente stringa:

env DISPLAY=:0.0 `which firefox`

Nessun commento:

Posta un commento