[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script shell non funziona correttamente da cron.



>Ciao,
ho un problema con uno script. Se lanciato da shell fa il "suo 
lavoro", 
se schedulato in cron lo fa parzialmente.
Cosa dovrebbe fare:
rileva il giorno della settimana
richiama una funzione, che controlla se esiste una dir, in caso positivo 
controlla se esiste un file, quindi lo cancella e poi crea un file
con lo stesso nome di quello appena cancellato facendo con tar un file 
bz2 e cancella la dir usata per creare il file.
Nello script ci sono una serie di echo per controllare cosa fa, ed alla 
fine un chown per restituire i files ad un determinato utente.
Se metto lo script in cron, nella email che mi invia vedo l'output di 
echo e quello di chown ma i vari rm e tar li salta.
Sapreste darmi una mano ?
Grazie. 
>>Uno degli errori tipici è dimenticarsi che cron non ha ambiente.
Quindi se usi della variabili d'ambiente del tuo script, se non le importi
(es. source) non te le trovi. P.S.
Se posti il tuo script possiamo aiutarti meglio. Walter 
ecco lo script:
>#!/bin/bash
>
>PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
>Day=$(date -d "$D" '+%a')
>tar=/bin/tar
>rm=/bin/rm
>chown=/bin/chown
>
>function creaTar() {
>    echo 'Inizio operazioni sulla dir DATI...'
>    echo 'Controllo se esiste il backup....'
>    if [ -d Backup\\As400Stamet\\DATI_$1 ]        
>        then
>            if [ -f $2_DATI_$1.bz2 ]
>            then
>                echo 'Il backup esiste, procedo...'
>                echo 'Cancello i file di backup vecchi.... '
>                echo "$2_DATI_$1.bz2"
>                $rm $2_DATI_$1.bz2
>            fi
>            echo 'Creo tar...'
>            echo "$2_DATI_$1.bz2"
>            echo 'Della dir DATI...'
>            echo "Backup\\As400Stamet\\DATI_$1"
>            $tar -cvjpf $2_DATI_$1.bz2 Backup\\As400Stamet\\DATI_$1
   --remove-files
>            echo 'Fine operazioni sulla dir DATI'
>            
>        fi
>        echo 'Inizio operazioni sulla dir GEN...'
>            echo 'Controllo se esiste il backup....'
>        if [ -d Backup\\As400Stamet\\GEN_$1 ]
>        then
>            if [ -f $3_GEN_$1.bz2 ]
>            then
>                echo 'Inizio operazioni sulla dir GEN...'
>                echo 'Il backup esiste, procedo...'
>                echo 'Cancello i file di backup vecchi....'
>                echo "$3_GEN_$1.bz2"
>                $rm $3_GEN_$1.bz2
>            fi
>            echo 'Creo tar...'
>             echo "$3_GEN_$1.bz2"
>            echo 'della dir GEN...'
>            echo "Backup\\As400Stamet\\GEN_$1"
>            $tar -cvjpf $3_GEN_$1.bz2 Backup\\As400Stamet\\GEN_$1
   --remove-files
>            echo 'Fine operazioni sulla dir GEN...'
>
>
>
>
>        fi    
>
>}
>
>case $Day in
>    Mon)
>        creaTar "Venerdi" "009" "010"
>        echo 'Assegno la proprietà dei file bz2 ad utente As400...'
>        $chown -Rv as400:nogroup /bck-as400/*.bz2 ;;        
>    Tue)
>        creaTar "Lunedi" "001" "002"
>        
>        echo 'Assegno la proprietà dei file bz2 ad utente As400...'
>        $chown -Rv as400:nogroup /bck-as400/*.bz2 ;;        
>     Wed)
>        creaTar "Martedi" "003" "004" 
>        
>        echo 'Assegno la proprietà dei file bz2 ad utente As400...'
>        $chown -Rv as400:nogroup /bck-as400/*.bz2 ;;        
>    Thu)
>        creaTar "Mercoledi" "005" "006"
>    
>        echo 'Assegno la proprietà dei file bz2 ad utente As400...'
>        $chown -Rv as400:nogroup /bck-as400/*.bz2 ;;        
>     Fri)
>        creaTar "Giovedi" "007" "008"
>        
>        echo 'Assegno la proprietà dei file bz2 ad utente As400...'
>        $chown -Rv as400:nogroup /bck-as400/*.bz2 ;;        
>esac
>echo 'Fine operazioni della fase di backup..'
>
>
>



Ad occhio è perché non vai nella directory, quando lo esegui con cron.
Prima di poter eseguire i vari rm e tar, devi andarci con: cd __DIRECTORY__

Walter


Reply to: