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

Re: Script shell non funziona correttamente da cron.





Il 29/06/2015 10:52, Walter Valenti ha scritto:

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..'


    


Reply to: