솔루션에서이것게시 후 원본 스크립트를 일부 변경했지만 출력이 원하는 대로 나오지 않습니다. 내 현재 스크립트는 다음과 같습니다.
#!/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에 직접 작성하고 콘솔의 일부 줄에 결과를 표시하여 각 작업을 몇 시간/분 단위로 실행하는 것입니다. 위의 스크립트는 이를 허용하지만 어느 시점에서는 실패합니다. 앞서 말했듯이 이 답변은 이 게시물의 시작 부분에서 알려드린 게시물의 이전 답변에서 얻었습니다.