Pagina 1 di 2
schedulazione [RISOLTO]
Inviato: lunedì 11 giugno 2012, 18:41
da daddo
Ciao, ho fatto uno script per eseguire il backup giornaliero su postgres,
se lancio lo script da riga di comando tutto ok, se invece provo ad inserirlo sul file di configurazione di crontab niente non parte
qualcuno può aiutarmi ?
grazie d
Re: schedulazione
Inviato: lunedì 11 giugno 2012, 18:55
da rpadovani
In che senso l'hai inserito nel file di configurazione di crontab?
Hai creato un nuovo crontab come spiegato nella
documentazione?
Re: schedulazione
Inviato: lunedì 11 giugno 2012, 19:17
da daddo
esatto,
crontab -e
00 19 * * * utente /percorso/script.sh
salvo
verifico con contab -l
Re: schedulazione
Inviato: lunedì 11 giugno 2012, 19:25
da rpadovani
Scusami, utente cos'è?
Lo script ha i permessi di esecuzione?
Devi essere root per eseguire lo script?
Re: schedulazione
Inviato: martedì 12 giugno 2012, 10:01
da daddo
Utente root
permessi su script -rwxrwxrwx 1 root root
Re: schedulazione
Inviato: martedì 12 giugno 2012, 12:39
da tomm
Dove vendono salvati i backup? il percorso è indicato come relativo o assoluto?
mi sembra di ricordare che cron non trova i percorsi relativi.
Re: schedulazione
Inviato: martedì 12 giugno 2012, 15:53
da daddo
relativo /backup/vari
comunque il percorso viene indicato nello script, che crea una dir per ogni giorno della settimana
Re: schedulazione
Inviato: martedì 12 giugno 2012, 17:01
da tomm
prova a scrivere il percorso assoluto e posta il risultato esatto di crontab -l.
Come dice WebbyIT, la sintassi che hai che hai indicato sopra sembra essere sbagliata.
Re: schedulazione
Inviato: martedì 12 giugno 2012, 18:24
da rpadovani
Non devi specificare l'utente nello script.
Se deve avere i permessi di root, dai
e inserisci
Re: schedulazione
Inviato: martedì 12 giugno 2012, 18:57
da daddo
:~# sudo crontab -l
# m h dom mon dow command
# backup db
# 50 11 * * * root /etc/init.d/backup_postgresql.sh --dated
00 19 * * * /etc/init.d/backup_postgresql.sh
# restart tomcat
00 23 * * * root /etc/init.d/tomcat stop
05 23 * * * root /etc/init.d/tomcat start
Re: schedulazione
Inviato: martedì 12 giugno 2012, 19:17
da rpadovani
E quindi?
Sai, se magari dicessi anche qualcosa, magari riusciremmo a darti una mano!
Re: schedulazione
Inviato: martedì 12 giugno 2012, 19:21
da daddo
Scusami, ma a parte dirti che non funziona e postare il risultato cosa ti posso dire !
Re: schedulazione
Inviato: martedì 12 giugno 2012, 19:25
da rpadovani
Quindi neanche dopo che l'hai inserita con
funziona?
Come lanci normalmente lo script?
Re: schedulazione
Inviato: martedì 12 giugno 2012, 19:38
da daddo
no continua a non partire
mentre se lancio il comando
./backup_postgres
parte e nelle cartella indicata, se non presente mi crea quella del giorno ad esempio mar altrimenti scrive il file nella cartella del giorno
Re: schedulazione
Inviato: martedì 12 giugno 2012, 20:43
da tomm
hai messo il percorso assoluto alla cartella del backup? magari posta anche lo script.
Inoltre puoi loggare quello che fa lo script reindirizzando l'output in un file di log.
Ad es:
Codice: Seleziona tutto
00 19 * * * /etc/init.d/backup_postgresql.sh > /var/log/backup.log
PS: /etc/init.d/ non sarebbe il posto adatto per uno script di backup
Re: schedulazione
Inviato: mercoledì 13 giugno 2012, 19:27
da daddo
Eccolo, ho provato anche altri percorsi, /etc/init.d/ era per prova
#!/bin/bash
export PGPASSWORD="11111111"
DATABASE_NAME="DB2010"
USERNAME="postgres"
HOST="localhost"
WORKING_DIR="/backup/vari/"
RUNNING_MODE=$5
PG_DUMP=/usr/local/APT/pgsql84/bin/pg_dump
if [ "$RUNNING_MODE" = "--dated" ]
then
DATA=`date +'%h_%d_%y'`
WORKING_DIR="${WORKING_DIR}"/"${DATABASE_NAME}"
OUTFILE="${DATABASE_NAME}_${DATA}.sql"
else
DATA=`date +'%a'`
if [ "$RUNNING_MODE" = "--isolated" ]
then
WORKING_DIR="${WORKING_DIR}"/"${DATABASE_NAME}/${DATA}"
OUTFILE="${DATABASE_NAME}.sql"
else
# data = giorno della settimana
WORKING_DIR="${WORKING_DIR}"/"${DATA}"
OUTFILE="${DATABASE_NAME}.sql"
fi
fi
# Creo la directory se non esiste
if ! test -d "$WORKING_DIR"
then
mkdir "$WORKING_DIR" > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "Errore nella creazione della directory $WORKING_DIR"
exit
fi
fi
# entro nella directory di lavoro
cd "$WORKING_DIR"
START_TIME=`date` # istante di inizio
# esecuzione del backup effettivo
$PG_DUMP --create --column-inserts -f $OUTFILE --encoding=UTF8 -U $USERNAME -h $HOST $DATABASE_NAME
END_TIME=`date`
Re: schedulazione
Inviato: mercoledì 13 giugno 2012, 23:06
da tomm
ho testato il tuo script direttamente da linea di comando e con cron, usando esattamente la tua configurazione e funziona perfettamente in entrambi i casi.
L'unica cosa che mi viene in mente è che u lanci lo script da linea di comando con l'utente postgres, mentre cron lo lancia con l'utente root e che postgres è configurato per accettare connessioni dall'utente postgres solo con il metodo ident.
Se questa ipotesi è giusta allora devi solo configurare postgres per fargli accettare connessioni dall'utente postgres con il metodo md5.
Sennò ci dev'essere un altro problema. Hai configurato cron in modo di loggare quello che fa lo script?
Codice: Seleziona tutto
00 19 * * * /etc/init.d/backup_postgresql.sh > /var/log/backup.log
Poi potrai vedere nel file /var/log/backup.log l'eventuale messaggio di errore.
Re: schedulazione
Inviato: giovedì 14 giugno 2012, 9:35
da daddo
su postgres ho configurato il file pg_hba.conf in modo da accettare tutto di tutti "host all all 0.0.0.0/0 md5"
ora provo a configurare cron per lo script, poi lo posto
Re: schedulazione
Inviato: giovedì 14 giugno 2012, 12:00
da daddo
possible file backup.log completamente vuoto ?
Re: schedulazione
Inviato: giovedì 14 giugno 2012, 12:32
da rpadovani
Beh, se hai lasciato il cron alle 19, fino alle 19 non avrai un file di log!