cron이 자동으로 실행되지 않는 이유는 무엇입니까?

cron이 자동으로 실행되지 않는 이유는 무엇입니까?

운영 체제: 우분투 12.04

이제 사용하고 싶습니다지원그리고언제든지gem은 내 데이터베이스를 자동으로 백업합니다. SSH를 통해 서버에 연결하면 추가된 사용자로 실행됩니다.백업 실행 -t my_backup, 잘 작동합니다. 하지만 크론 파일은 다음과 같습니다.

0 22 * * * /bin/bash -l -c 'backup perform -t my_backup'

22:00에는 운행하지 않습니다. 내가 사용할 때고양이/etc/crontabcron 구성 파일을 확인하십시오. 이는 다음과 같습니다.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

이것/bin/bash그리고/bin/sh왜? 무엇을 해야 할까요?

답변1

특수 crontab 파일 /etc/crontab은 형식이 약간 다릅니다. 여기서 여섯 번째 필드는 cron 작업을 실행하는 사용자여야 합니다. 따라서 해당 파일에 작업을 넣으려면 형식에 맞게 *와 /bin/bash 사이에 사용자 이름을 삽입해야 합니다. 그것은 다음과 같습니다:

0 22 * * * root /bin/bash -l -c 'backup perform -t my_backup'

루트를 실제로 사용하려는 사용자 이름으로 바꾸십시오.

답변2

실행할 백업 명령으로 스크립트를 작성한 후 다음과 같이 crontab에서 호출해 보세요.

0 22 * * * (cd <absolute-path-of-directory> && ./script.sh >>script.log 2>&1)

이 스크립트에서는 먼저 다음 줄을 추천합니다.

#!/bin/bash
echo "`date '+%Y%m%d %H%M%S':`: $0 started"

따라서 cron이 이를 실행하고 명령에 집중하는 것을 볼 수 있습니다. 일반적으로 잘 수행되는 스크립트가 cron에서 실행되지 않는 이유는 일반적으로 cron에서 사용되는 다양한 환경에서 찾을 수 있습니다.

답변3

저도 몇주전에 똑같은 일을 겪었습니다. crontab 파일을 복사해서 덮어쓰려고 합니다. 모든 매개변수가 정확하더라도 cron이 예상대로 실행되지 않습니다. 같은 파일을 삭제하고 복사하면 잘 되더라구요.. 똑같이 해보세요..

그런데 파일을 덮어쓰려고 하면 왜 작동하지 않는지 이해가 되지 않습니다.

관련 정보