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に感謝します。

おすすめ記事