crontab이 스크립트를 시작하지 않습니다

crontab이 스크립트를 시작하지 않습니다

내 crontab에 문제가 있습니다. cron이 내 스크립트 중 하나를 시작하지 않습니다.

이것은 내 crontab(루트)의 상단 부분입니다.

SHELL=/bin/bash

#---------------------------------------
# Items availability
#---------------------------------------


# Daily offer import + daily sync everything
30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log

# Updates availability
# 7:45 mass update happens
*/5 0-6 * * *   /var/www/import/check_availability.sh
0,5,10,15,20,25 7 * * * /var/www/import/check_availability.sh
*/5 8-23 * * * /var/www/import/check_availability.sh

#---------------------------------------
# Sales import + sync
#---------------------------------------

# Import EBAY + WWW sales. Run sales cleaner
*/15 * * * *    /var/www/import/import_all.sh
*/5 * * * *     /var/www/import/import_www.sh
55 13 * * *     /var/www/import/import_all.sh
58 13 * * *     /var/www/import/import_www.sh

... more stuff 7KB total ...

오랫동안 완벽하게 작동했는데 지난주에 라인을 다시 시작한 후

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log

그만 일해. download_offers.sh의 내용:

#!/bin/sh

echo "Working..."

echo "Download offers started" > /var/log/import/OFFER_START.log

... some private stuff ; just bunch of wget's and echo's ...

파일이 /var/log/import/OFFER_START.log생성되지 않았습니다.

나는 지금까지 무엇을 시도했는가

  • 시간을 7시 30분과 8시로 변경했습니다(원래는 7시 45분이었습니다)
  • 추가했는데 > /var/logs/download_offers_cron.log파일이 아직 생성되지 않았습니다.
  • 루트 이메일을 검색했는데 스크립트 중 하나만 빼고 모두 시작되었습니다.
  • 파일은 +x 실행 파일입니다.

알려진 버그가 있나요? 메일 외에 crontab을 디버깅하기 위한 다른 옵션이 있습니까? 스크립트가 전혀 시작되지 않는 이유는 무엇입니까? 지난주에 재부팅하고 나니 잘 되더라구요...

내가 정신을 잃을 수 있게 도와주세요

편집하다:

CentOS 버전 6.6(최종 버전)을 사용하고 있습니다.

이것은 /var/log/cron입니다.

Mar 10 07:30:01 serverpro1 CROND[11291]: (root) CMD (/var/www/import/download_offers.sh > /var/logs/download_offers_cron.log)

cron 항목은 괜찮은 것 같은데 /var/log/download_offers_cron.log 파일이 없나요?

답변1

또 마술처럼 작동해요

내가 바꾼 유일한 것은

30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log
                                                             ^^ here

도착하다

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log
                                                             ^^ here

오류가 발생하고 스크립트가 전혀 작동하지 않는 이유는 무엇입니까? 나는 전혀 모른다

애초에 스크립트가 작동을 멈춘 이유는 풀리지 않는 미스터리입니다

답변2

cron 작업에 대해서는 /var/log/syslog 파일을 확인하십시오. 로그에서 "cron"이라는 단어를 찾아 오류가 무엇인지 확인하세요. 아래 명령을 사용하여 동일한 내용을 확인하십시오.

grep -i cron /var/log/syslog

그렇지 않으면 당신이 언급한 모든 것이 괜찮습니다.

답변3

crontab에서는 bash를 사용하라고 되어 있지만 스크립트를 실행하면 실제로 'sh' 셸을 다시 사용하게 되므로 모든 환경 변수가 손실됩니다. 지난주에이 문제가 발생했습니다. 내 문제는 스크립트가 cron에서 실행될 때 경로 변수가 없지만 수동으로 실행하면 스크립트가 제대로 실행된다는 것입니다.

스크립트 상단의 #!/bin/sh 다음에 이를 수행하여 이를 테스트할 수 있습니다.

echo $PATH
echo $path
sleep 10

스크립트가 cron에 의해 실행될 때. "sh"가 어떤 경로를 사용했는지 기억나지 않으므로 둘 다 에코하세요.

스크립트에 "sh"를 사용하지 않는 것이 좋을까요?

또는 실행하는 각 유틸리티에 대해 유틸리티, 각 입력 및 각 출력 파일의 전체 경로를 입력합니다.

따라서 스크립트가 다음과 같이 말한다면:

wget ...

전체 경로로 바꿀 수 있습니다.

/usr/bin/wget ...

아니면 올바른 경로가 무엇이든간에.

(아직 댓글을 달 수 없어서 답글을 달 수 없습니다. 죄송합니다.)

답변4

이것은 오타인 것 같습니다.
첫 번째 스크립트에서는 을 사용했지만 /var/log 새 스크립트에서는 입니다 /var/logs. Log가 표준 디렉터리인데 log를 사용하는 것 같습니다.에스

관련 정보