免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2066 | 回复: 7
打印 上一主题 下一主题

脚本:怎么提取df -k的信息,并把它录入数据库? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-22 13:03 |只看该作者 |倒序浏览
我用df -k|grep lhsys是得出以下结果:
lhsys_domain#lhsys  284458488  175756771   107725912  62%   /lhsys
为了提取这些信息,写了这个命令
df -k|grep lhsys |awk '{print system("date +%Y%m%d%H%M%S"$1","$2","$3","$4","$5","$6}'
上面执行后显示:
20050222124425
0lhsys_domain#lhsys,284458488,175756771,107725912,62%,/lhsys
但是不是我想要的结果,我想要结果是:
20050222124425,lhsys_domain#lhsys,284458488,175756771,107725912,62%,/lhsys
我应该怎么改呢?

还有,我如何把以上信息录入oracle数据库呢?(在不写C++程序的情况下,用脚本实现),比如表dfdataview(datetimeno,filesystem,blocks,used,availble,capacity,mountedon)

麻烦各位大侠帮帮忙?

论坛徽章:
0
2 [报告]
发表于 2005-02-22 13:27 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

怎么没人回答俺的,好失望ing。我现在急用,麻烦各位大侠帮帮忙了!

论坛徽章:
0
3 [报告]
发表于 2005-02-22 14:08 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

第一个,你把时间作为一个单独变量,再把其他部分作为一个变量。
d=`date +%Y...`
o=`其他部分`
echo "$d,$o"

第二个,使用sqlplus好了
sqlplus user/passwd@sid<<EOF
insert into ...
commit;
exit;
EOF

论坛徽章:
0
4 [报告]
发表于 2005-02-22 21:35 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

第一个再加
|tr  "\n" ,

| sed 'N;s/\n/,/'

论坛徽章:
0
5 [报告]
发表于 2005-02-23 08:42 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

建议你使用echo生成一个sql语句,然后执行语句;
你要插入的数据在echo中可以轻松导入:)

论坛徽章:
0
6 [报告]
发表于 2005-02-23 16:50 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

多谢各位大侠,我改好了这个脚本,可以执行它
=========== 文件dflsnrctl.sh ================
#!/bin/sh
cd /kewf/dflsnrctl/
date +%Y%m%d%H%M%S | tr '\n' ',' > dflsnrctl_result.txt
df -k|grep lhsys|awk '{print $1","$2","$3","$4","$5","$6;}' | tr '\n' ',' | sed 's/\/lhsys,/\/lhsys/g' >> dflsnrctl_result.txt
sqlldr userid=monitor/monitor123@jssystem control=/kewf/dflsnrctl/dflsnrctl.ctl >> dfindb.txt

=========== 文件dflsnrctl.ctl ================
load data
infile '/kewf/dflsnrctl/dflsnrctl_result.txt'
append into table kewf_tl_dfdataview
fields terminated by ','
(datetimeno,filesystem,blocks,used,available,capacity,mountedon)

我执行这个脚本时
$ dflsnrctl.sh
可以得出一个最新的dflsnrctl_result.txt,并且可以准确地入库。

但是有一个怪问题,就是我在crontab里面执行就有问题,
我在crontab里增加了如下一行:
* * * * * /kewf/dflsnrctl/dflsnrctl.sh>>/kewf/dflsnrctl/dflsnrctl_result.log
他能每分钟执行并得出一个最新的dflsnrctl_result.txt文件,但是它却不能执行sqlldr这一句,应该说是当这句话不存在。
我也不知道为什么这么怪,我直接执行该脚本,是可以入库的,但是变成在crontab里定时执行它,就会有问题。
???????????????????????

论坛徽章:
0
7 [报告]
发表于 2005-02-23 20:52 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

一定是sql执行的时候需要很多环境变量,在你直接运行时这些变量存在,但是在crontab运行时这些变量的设置必须加载,建议找一个别人的教本,把要设置的变量的语句copy过来就可以了:)

论坛徽章:
0
8 [报告]
发表于 2005-02-24 09:31 |只看该作者

脚本:怎么提取df -k的信息,并把它录入数据库?

感谢各位,特别是lozity,前面是应该要加载环境变量的,我在脚本执行前加了
. /kewf/app/.profile
就可以入库了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP