PDA

View Full Version : Lanciare script con crontab


xwang
19-12-2009, 18:44
Ciao a tutti,
in ufficio, lanciando uno script con crontab, mi sono accorto che la bash di crontab usa impostazioni diverse dal terminale standard (path ridotto /bin/sh al posto di /bin/bash).
C'è un modo per dire a crontab di usare gli stessi settaggi del terminale (in cui gli script funzionano perfettamente) senza dover modificare tutti gli script?
Grazie,
Xwang

Gimli[2BV!2B]
19-12-2009, 19:44
Se il tuo unico problema è la mancanza dei path puoi specificare solo quelli che ti servono all'inizio degli script.
Esempio:
#!/bin/sh

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Puoi vedere quelli impostati automaticamente dal sistema nel file /etc/profile
Teoricamente potresti anche solo includere questo file, ma quasi certamente contiene varia altra roba che non serve assolutamente ai tuoi script e li appesantirebbe senza motivo.

xwang
19-12-2009, 19:54
;30144730']Se il tuo unico problema è la mancanza dei path puoi specificare solo quelli che ti servono all'inizio degli script.
Esempio:
#!/bin/sh

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Puoi vedere quelli impostati automaticamente dal sistema nel file /etc/profile
Teoricamente potresti anche solo includere questo file, ma quasi certamente contiene varia altra roba che non serve assolutamente ai tuoi script e li appesantirebbe senza motivo.

Anche altre variabili di sistema necessarie per alcuni programmi commerciali.
Quindi forse dovrei includere il file, ma come si fa? Non c'è modo di farlo senza modificare gli script, agendo solo sulla chiamata degli stessi in crontab?
Xwang

Gimli[2BV!2B]
19-12-2009, 20:28
Leggendo man crontab e controllando il contenuto di /etc/crontab ho notato che è possibile definire le variabili d'ambiente che cron propone agli script che lancia, senza la necessità di modificare ogni singolo script.

Basta metterle prima delle righe che definiscono le esecuzioni programmate.
Non credo sia possibile includere un file bash nei crontab.

Questo potrebbe bastare?

xwang
19-12-2009, 20:46
Penso di sì.
Per curiosità, come si fa ad ottenere la lista di tutte le variabili di ambiente?
Xwang

Gimli[2BV!2B]
19-12-2009, 21:06
Per vedere cosa contiene l'ambiente di un utente basta eseguire il comando env, senza alcun argomento, in una shell interattiva appartenente all'utente stesso.