Tarefa Crontab não trigerred

0

Estou tentando automatizar o gerenciamento de backup no servidor no framboesa e colocar um disparador de tar regular em um crontab. Eu configurei via scripts bash. Primeiro, configuro a tarefa e, em seguida, uso o script para realizar as ações esperadas. O problema é que o script não é executado pelo crontab. Quando executo o mesmo comando que o salvado no crontab (eu verifico com o comando crontab -l para ter certeza de que é exatamente o mesmo) tudo funciona corretamente.

Aqui está o meu script de backup:

#!/bin/sh

function set_backup(){
    SCHEDULE_FILE="Configuration/crontab"
    SCHEDULE="* * * * *"
    USER=$(whoami)
    WORKING_DIRECTORY="$PWD"
    SCRIPT_NAME="/Admin/BackupHomeServer.sh"
    COMMAND=' /bin/bash ' #these spaces are essential for proper file formatting
    printf "$SCHEDULE " > $SCHEDULE_FILE
    #printf "$USER" >> $SCHEDULE_FILE
    printf "$COMMAND" >> $SCHEDULE_FILE
    printf "$WORKING_DIRECTORY" >> $SCHEDULE_FILE
    printf "$SCRIPT_NAME\n" >> $SCHEDULE_FILE
    crontab $SCHEDULE_FILE
}

function perform_backup(){
    BACKUP_FILENAME=$(date +%Y-%m-%d)
    BACKUP_FILENAME+=".tar.gz"
    BACKUP_DIR=$(cat Configuration/PyHomeServer.conf | grep "Backup directory:" |  awk '{print $3}')

    FILES_TO_INCLUDE="Configuration/ Database/"
    if [ ! -d "$BACKUP_DIR" ]; then
        mkdir $BACKUP_DIR
    fi
    tar -cvzpf $BACKUP_DIR/$BACKUP_FILENAME $FILES_TO_INCLUDE
}


function retrieve_latest_backup(){
    echo To be implemented
}

if [ "$#" = "0" ]; then
    perform_backup
elif [ "$1" = "retrieve" ]; then
    retrieve_latest_backup
elif [ "$1" = "set" ]; then
    set_backup
fi

Isto é o que eu vejo quando eu chamo crontab -l :

* * * * * /bin/bash  /home/gonczor/Documents/ServerPy/Admin/BaskupHomeServer.sh

Eu temporariamente me livrei de passar o nome de usuário depois de ler este tópico e eu Também assegurei que o caminho está correto depois de ler este aqui.

    
por gonczor 23.04.2016 / 02:54

1 resposta

1

Encontrei uma resposta em "How Linux Works", de Brian Ward. Eu simplesmente estraguei a sintaxe. A exclusão da passagem de $USER corrigiu o problema. Em outras palavras, o arquivo que estou passando para crontab deve ter a seguinte estrutura:

m h dm m dw command

e não:

m h dm m dw user command

E mais uma vez obrigado roaima por dicas úteis.

    
por 25.04.2016 / 14:56

Tags