第一次使用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又忽然觉得自己变强大了。^_^