2011-10-07 5 views
1

나는 cron 작업 (및 일반적으로 리눅스)에 대한 경험이 부족하지만 수동으로 실행할 때 잘 작동하지만 더하기 실행되지는 않는 mysql 덤프 스크립트를 설정했습니다. crontab에.실행되지 않는 트러블 슈팅 크론 작업

내 스크립트에 loacted입니다

: /root/backup_mysql.sh

그리고 내 crontab을은 다음과 같습니다

그것은 cron을 통해 실행을 중지 스크립트에 뭔가 거기에 그냥 넣다
0 12 * * * /root/backup_mysql.sh 
0 21 * * * /root/backup_mysql.sh 

, 여기 있어요 백업 스크립트. 어떤 도움이 많이 주시면 감사하겠습니다 -이 쉬운 경우, 단지 내가 잘못 뭘하는지 볼 수

#!/bin/sh 

dbpass="password" 

echo "Grabbing database list... excluding mysql, information_schema & phpmyadmin... dumping databases to /backups/" 

for db in \ 
`mysql -u root -p$dbpass -e "show databases;" \ 
| tr -d "| " \ 
| egrep -v "(Database|mysql|information_schema|phpmyadmin.sql)"`; \ 

do mysqldump -u root -p$dbpass --opt --routines --databases $db > "/backups/$db.sql"; 

done 

echo "done..." 

죄송합니다.

건배

+2

작업이 출력과 함께 실패하면 Cron이 메일을 보내야합니다. 메일을 보낼 곳을 지정하거나 MAILTO = user @ domain을 crontab에 추가하십시오. 또한, 루트 사용자의 crontab ('crontab -e'로 편집되었지만'/ etc/crontab'과 같은 시스템 crontab이나'/ etc/cron.d/foo'가 맞지 않음)을 확인하고 싶습니다. crontab, 사용자 필드가 누락되었습니다. – derobert

+0

grep에'^ (db1 | db2) $'가 필요하다는 것을 알려주고 싶습니다. 캐럿과 달러 기호에 유의하십시오. 또한 mysql 맨 페이지 특히'-v/log/cron' (있는 경우) 또는'/ var/log/syslog' 또는'/ var/log/cron'을 체크하고' 메시지 '또는 cron 기능이있는 곳이면 어디든 – derobert

+1

'cron'중에'mysql'과'mysqldump'가 당신의 경로에 있는지 확실합니까? 그 시점에서 매우 기본적인 쉘을 얻습니다. 아마도 경로를 설정해야 할 것입니다 . – drysdam

답변

1

실행 하려면 printenv

복사 UR 스크립트 (/root/backup_mysql.sh)에 모든 환경 변수를 붙여 넣습니다. sudo는 같은

추가 cron 작업

는 sudo의 crontab -e

0 12 * * * /root/backup_mysql.sh

0 21 * * * /root/backup_mysql.sh