crontabに作成されたbashスクリプトのイベント順序の変更

crontabに作成されたbashスクリプトのイベント順序の変更

ソリューションからこれ公開後に元のスクリプトをいくつか変更しましたが、出力は必要に応じて表示されません。私の現在のスクリプトは次のとおりです。

#!/bin/bash
add=$1
php=/usr/bin/php
hour=0
minute=0

update_time () {
    (( minute += add ))
    if (( minute >= 60 )) ; then
        (( hour += minute / 60 ))
        (( minute %= 60 ))
    fi
    if (( hour > 23 )) ; then
        echo "Can't fit into a day!"
        exit 1
    fi
}

cd /var/sync

echo -e 'Display current crontab\n---------------------------------------------------\n'
(crontab -l)

echo -e 'Erasing current crontab\n---------------------------------------------------\n'
(crontab -r)

echo -e 'Generating new crontab\n---------------------------------------------------\n'

for dir in sync*/ ; do
    if [[ -f "$dir"/sync.php ]] ; then
        echo -e $minute $hour * * * "$php" /var/sync/run.sh "$dir" sync.php '\n'
        (crontab -l ; echo "$minute $hour * * * "$php" /var/sync/run.sh "$dir" sync.php") | sort - | uniq - | crontab -
        update_time

        if [[ -f "$dir"/replicator/Replicator.php ]] ; then
            echo -e $minute $hour * * * "$php" /var/sync/run.sh "$dir" Replicator.php '\n'
            (crontab -l ; echo "$minute $hour * * * "$php" /var/sync/run.sh "$dir" Replicator.php") | sort - | uniq - | crontab -
        fi
        update_time
    fi
done

echo -e 'Display current crontab\n---------------------------------------------------\n'
(crontab -l)

このスクリプトの現在の出力は次のとおりです。

0 0 * * * /usr/bin/php /var/sync/run.sh sync_bi/ sync.php
0 1 * * * /usr/bin/php /var/sync/run.sh sync_pfizer/ Replicator.php
20 0 * * * /usr/bin/php /var/sync/run.sh sync_bi/ Replicator.php
20 1 * * * /usr/bin/php /var/sync/run.sh sync_sandbox/ sync.php
40 0 * * * /usr/bin/php /var/sync/run.sh sync_pfizer/ sync.php
40 1 * * * /usr/bin/php /var/sync/run.sh sync_sandbox/ Replicator.php

いつするべきか:

0 0 * * * /usr/bin/php /var/sync/run.sh sync_bi/ Replicator.php
20 0 * * * /usr/bin/php /var/sync/run.sh sync_bi/ sync.php
40 1 * * * /usr/bin/php /var/sync/run.sh sync_pfizer/ Replicator.php
1 0 * * * /usr/bin/php /var/sync/run.sh sync_pfizer/ sync.php
20 1 * * * /usr/bin/php /var/sync/run.sh sync_sandbox/ Replicator.php
40 1 * * * /usr/bin/php /var/sync/run.sh sync_sandbox/ sync.php

まずReplicator.phpスクリプトを実行sync.phpした後、スクリプトを実行した後午前0時から20分ごとに実行し、午後12時に同じように繰り返すという意味です。コードに問題があるのでしょうか?

コードの基本的な概念は、コードをcrontabに直接作成し、コンソールの一部の行に結果を表示して、各タスクを数時間/分単位で実行することです。上記のスクリプトはこれを許可しますが、ある時点で失敗します。前述したように、この回答はこの記事の冒頭でお知らせした投稿の以前の回答から得られました。

ベストアンサー1

おすすめ記事