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

Codice: Seleziona tutto

sudo crontab -e
e inserisci

Codice: Seleziona tutto

00 19 * * * /percorso/script.sh

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

Codice: Seleziona tutto

sudo crontab -e
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!