crontab 작업이 트리거되지 않았습니다

crontab 작업이 트리거되지 않았습니다

저는 라즈베리 파이 서버에서 백업 관리를 자동화하고 일반 tar 트리거를 crontab에 넣으려고 합니다. bash 스크립트를 통해 설정했습니다. 먼저 작업을 설정한 다음 스크립트를 사용하여 예상되는 작업을 수행합니다. 문제는 crontab에서 스크립트가 실행되지 않는다는 것입니다. crontab에 저장된 것과 동일한 명령을 실행하면( crontab -l정확히 동일한지 확인하기 위해 명령으로 확인했습니다 ) 모든 것이 잘 작동합니다.

이것은 내 백업 스크립트입니다.

#!/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

전화할 때 보이는 내용은 다음과 같습니다 crontab -l.

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

이 글을 읽은 후 지금은 사용자 이름 전달을 포기했습니다.이 스레드또한 읽은 후 경로가 올바른지 확인했습니다.이것.

답변1

나는 Brian Ward의 "How Linux Works"에서 답을 찾았습니다. 방금 구문을 엉망으로 만들었습니다. 통과를 제거하면 $USER문제가 해결되었습니다. 즉, 내가 전달하는 파일은 crontab다음과 같은 구조를 가져야 합니다.

m h dm m dw command

아니다:

m h dm m dw user command

유용한 팁을 주신 roaima님께 다시 한 번 감사드립니다.

관련 정보