shスクリプトがあります。 crontabを使用してどのように実行しますか?

shスクリプトがあります。 crontabを使用してどのように実行しますか?

次のファイルがありますexecute-backup-from-container.sh。ファイルの内容は次のとおりです。

#!/bin/bash
FILE=minime.sql.`date +"%Y%m%d".gz`
CONTAINER='mysql_01'
SCRIPT_ON_CONTAINER='/container-mysql-dump.sh'

${OUTPUT}=$(docker exec ${CONTAINER} /$SCRIPT_ON_CONTAINER)

echo "=============="
echo "$CONTAINER:/$FILE"
echo "=============="
docker cp "$CONTAINER:/$FILE" backup-data/

実行するときは、crontab -e次のように入力します。
0 5 * * 1 /home/me/projects/execute-backup-from-container.sh これはexecute-backup-from-container.sh、毎日午前5時に実行する必要があることを意味します。
問題は、スクリプトがまったく実行されないことです。
もしそうなら、問題は正確に何ですか?なぜ実行しないのですか?

答え1

あなたのアイテムに対応するcronフィールドの意味は次のとおりです。

minute:       0 
hour:         5 
day of month: * 
month:        * 
day of week:  1 
command:      /home/me/projects/execute-backup-from-container.sh

英語に翻訳すると次のようになります。月曜日の朝午前5時(毎月何日でも)。

実行したい場合:

毎日午前5時

次に、5番目のフィールドを次のように作成したいと思います*

0 5 * * * /home/me/projects/execute-backup-from-container.sh

答え2

ファイルが実行可能に設定されていることを確認しましたか?以下は、スクリプトを実行可能としてマークする例です。

$ ls -l test.sh
-rw-r--r-- 1 ahill ahill 0 Mar 23 19:30 test.sh
$ chmod +x test.sh
$ ls -l test.sh
-rwxr-xr-x 1 ahill ahill 0 Mar 23 19:30 test.sh

次に確認しなければならないのは環境だ。デフォルトでは、クローン操作は環境を継承しません。 「修正」はここで説明される。
既存の環境変数を使用してcronコマンドを実行するには?

環境が重要な理由の1つは、cronがbashを見つけることができないかもしれないということです!望むより: https://www.digitalocean.com/community/questions/why-is-cron-not-running-my-sh-script

それでも理解できない場合は、テストしてみましょう。クローンの操作を次に変更します。

0 5 * * * /home/me/projects/execute-backup-from-container.sh

到着する:

0 5 * * * /home/me/projects/execute-backup-from-container.sh >> ~/script_errors.log 2>&1 

何が起こるか:次にcronがジョブを開始すると、結果のエラーメッセージがscript_errors.logテキストファイルにダンプされます。 (script_errors.logファイルのパスを適切と思われるパスに変更します。ただし、ファイルには必須ではありませんが、パスが存在することを確認してください。)

また、OPで実際の問題になる可能性がある「コンテナ」という単語を発見しました。スクリプトがDockerコンテナ内にある場合は、次の解決策があります。
https://www.ekito.fr/people/run-a-cron-job-with-docker/

答え3

すべての回答を考慮した後、最後の質問は最後の行にあります。

docker cp "$CONTAINER:/$FILE" backup-data/  

最後の行は

docker cp "$CONTAINER:/$FILE" docker-projects/mysql/backup-data/  

ご支援ありがとうございます。

関連情報