|
发表于 2005-4-25 15:41:38
|
显示全部楼层
mysql是MySQL的终端交互接口,如果要在shell中调用它来执行非交互的cron任务,可以考虑两种方法。第一种是使用expect,第二种是将包含有SQL语句的文本文件重定向输入至mysql以作为命令来执行,个人推荐后者。
例如你有一个文本文件sample.mysql如下:
- CREATE TABLE `ftpquotatallies` (
- `name` varchar(30) NOT NULL default '',
- `quota_type` enum('user','group','class','all') NOT NULL default 'user',
- `bytes_in_used` float NOT NULL default '0',
- `bytes_out_used` float NOT NULL default '0',
- `bytes_xfer_used` float NOT NULL default '0',
- `files_in_used` int(10) unsigned NOT NULL default '0',
- `files_out_used` int(10) unsigned NOT NULL default '0',
- `files_xfer_used` int(10) unsigned NOT NULL default '0'
- ) TYPE=MyISAM;
复制代码
然后在shell脚本中调用以下命令:
- mysql -u [i]dba_user[/i] -p[i]passwd[/i] [i]mydb[/i] < sample.mysql
复制代码
将dba_user替换为你的mysql数据库帐号,password替换为该帐号的密码,mydb替换为你要操作的数据库名称即可。当然,这样会有安全隐患,注意保证这个脚本的root只读权限,谨慎使用!
要改变你的操作内容,只需要重新构造sample.mysql即可,使用cat、awk、sed这些文本操作工具可以很方便地完成这种任务。 |
|