cron不能正常执行php脚本备份mysql数据


第一次使用cron执行任务计划,找了很多资料学习一番。
就用php写了一个备份mysql的程序。
config.php:

<?php
return array(
    'path'=>'/root/mysql_back',
'db_info'=>array(array('db'=>'db1','user'=>'back_db','pwd'=>'123'),array('db'=>'db2','user'=>'back_db','pwd'=>'123'),array('db'=>'luntai','user'=>'db3','pwd'=>'123')));

mysql_back.php:

#!/usr/bin/php
<?php
$config=include('/root/crontab-task/config.php');
$datetime=date('Ymd_His');
foreach($config['db_info'] as $v){
    $filename="{$v['db']}-{$datetime}";
    exec("mysqldump --opt -u {$v['user']} --password={$v['pwd']} {$v['db']} > {$config['path']}/{$filename}.sql",$output);
}

为mysql_back.php添加可执行权限

chmod +x mysql_back.php

手动执行该脚本是没有问题的,但是,设置cron定时任务后却不能执行,最后发现是因为$config['path']使用的路径不对,我原来使用~/mysql_back,后来改成绝对路径,程序就能工作了。
另外关于cron的用法,如果用crontab -e编辑不要添写用户名如下
* * * * * command to be executed
*/5 * * * * /root/mysql_backup.php
如果直接编辑/etc/crontab则需要像下面这样填写
* * * * * user-name command to be executed
*/5 * * * * root /root/mysql_backup.php

总之搞定了cron又忽然觉得自己变强大了。^_^

crontab不能正常执行的五种原因

 

Archives