Tarefas Cron Diárias e Semanais Personalizadas Não Executadas [duplicadas]

0

Eu criei um script para fazer backup de meus bancos de dados e meus sites. Ele funciona bem se eu executar diretamente, mas não está sendo executado como um trabalho cron.

Eu criei um link simbólico para o script:

lrwxrwxrwx 1 root root    44 Feb 11 14:58 backupsql -> /home/techguyalabama/dropboxbackup/backupsql

Se eu executar o backupsites do diretório /etc/cron.daily , ele solicitará minha senha. Não tenho certeza se esse é o problema. Se for, como evito isso?

Eu fiz uma alteração no tempo que as tarefas agendadas são executadas. Talvez seja um não-não também?

Isso está no meu crontab:

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
05 5    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
30 5    * * 6   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
00 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Eu reiniciei o servidor para ver se isso fazia alguma diferença e isso não aconteceu.

Eu também verifiquei o syslog, deste post Onde está o log do cron / crontab? , para ver se havia alguma coisa lá sobre o backupsql:

tail -f /var/log/syslog | grep backupsql

Não tenho resultados.

Alguém vê o que estou fazendo errado?

EDIT # 1

Este é o meu script backupsql:

#!/bin/bash

DB_BACKUP="/home/techguyalabama/dropboxbackup/sqlbackup"
DB_USER="root"
DB_PASSWD="wouldntyouliketoknow"
HN='hostname | awk -F. '{print $1}''

# Create the backup directory
mkdir -p $DB_BACKUP

# Backup each database on the system
for db in $(mysql --user=$DB_USER --password=$DB_PASSWD -e 'show databases' -s --skip-column-names|grep -viE '(staging|performance_schema|information_schema)');
do mysqldump --user=$DB_USER --password=$DB_PASSWD --events --opt --single-transaction $db | gzip > "$DB_BACKUP/mysqldump-$HN-$db-$(date +%Y-%m-%d).gz";
done

/home/techguyalabama/dropboxbackup/dropbox_uploader.sh upload /home/techguyalabama/dropboxbackup/sqlbackup/*.* /sqlbackup/
rm -f /home/techguyalabama/dropboxbackup/sqlbackup/*.*
    
por ErocM 13.02.2015 / 12:37

2 respostas

0

Não esqueça que esses scripts cron são executados como root, o que significa que, por exemplo, o diretório home se refere ao diretório home do root e assim por diante.

Como o seu script pede uma senha, você provavelmente precisará executá-lo com privilégios de root, então você não pode simplesmente criar o usual .anacron / cron.daily e colocar seu script lá, você tem que usar o /etc/cron .daily para que seja executado com as permissões corretas.

Acho que a solução mais fácil é percorrer seu script e verificar se ele usa variáveis específicas do usuário, como $ HOME. Nesse caso, é necessário substituí-las por aquelas do usuário 'techguyalabama'.

    
por trgfdhry ygjhfgtgyjh 13.02.2015 / 13:33
0

Acabei de seguir esta resposta de Como configurar um trabalho cron do root Corretamente :

% bl0ck_qu0te%

Como o usuário e isso funcionou imediatamente.

    
por ErocM 13.02.2015 / 15:18