免费注册 查看新帖 |

Chinaunix

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

请大家帮忙,shell文件和进程操作,搞定的话,国足就夺冠了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-13 16:19 |只看该作者 |倒序浏览
18可用积分
偶刚刚接触unix(用的是SUN OS,C Shell),没装sar,top之类的,只有prstat,vmstat之类的,偶潜水几天,看了这么多热心的朋友,先谢谢你们为偶这些菜鸟指路,现在老板下达任务,有几个问题请大家帮忙。新手没多少分,偶分期付吧哈哈
1.需要做一个查找某个目录下的core文件,把查找到的core的路径和名字,都写入表中,find查询出的如果是多个文件,就形成多条记录,偶不会写这种格式……也不清楚怎么把find的结果传输到sql中。
2.列出CPU占用率最高的10个进程的信息,包括PID,用户名,进程名,占用的内存,内存占用的比例,运行时间,该进程占用的CPU(顺便问一下,prstat列出的CPU比例是说的占用的多颗CPU的比例吗)的比例,,
        该进程的执行文件名(包括路径),和一些我都搞不清的指标值(其他指标值老板不太关心哈哈),把这些信息写入表中。
3.跟2类似,列出内存占用率最高的10个进程的信息,包括PID,用户名,进程名,占用的内存,内存占用的比例,运行时间,该进程占用的CPU(顺便问一下,prstat列出的CPU比例是说的占用的多颗CPU的比例吗)的比例,,
        该进程的执行文件名(包括路径),和一些我都搞不清的指标值(其他指标值老板不太关心哈哈),把这些信息写入表中。
4.给定一个进程名字列表这个名字列表是放在一个service_list文件中,格式如下:
service1
service2
……
如果发现哪个进程挂掉了,就把他自动重启起来
5.看到一些shell里if [ -ne]等形式的-ne -gl分别表示什么意思,看不懂,
第一帖,请大家帮忙,谢谢,大家也别忘了看奥运啊
顺便把写得获取CPU,内存,磁盘信息的SHELL贴一下,就是这种格式的

#!/bin/sh

# CPU
CPU_OUT=`vmstat 5 2 | sed -n '4p' | awk '{print $22}'`
#echo $CPU_OUT

# 内存
MEM_OUT=`vmstat 5 2 | sed -n '4p' | awk '{print $5}'`
echo $MEM_OUT

# 磁盘
DISK_OUT=`df -k | grep /d30 | awk '{print $5}'|sed 's/%//g'`  #测试机无opadmin,所以用d30代替测试
echo $DISK_OUT

sqlplus -s  user_test/user123@demo_db <<!

set echo off;
set heading off;
set serveroutput on
set timing on
set feedback off
        -- CPU
   insert into user_test.MONI_GATHER(MONTR_TYPE,MODULE_TYPE,MONTR_DESC,PARENT_PART_ID,SUB_PART_ID,CREATE_DATE,CONTENT_INFO,EXT1,EXT2,REMARKS)
               values('HOST','CPU','CPU_IDLE',1001,10010001,sysdate,'${CPU_OUT}','','','');
        -- mem
   insert into user_test.MONI_GATHER(MONTR_TYPE,MODULE_TYPE,MONTR_DESC,PARENT_PART_ID,SUB_PART_ID,CREATE_DATE,CONTENT_INFO,EXT1,EXT2,REMARKS)
               values('HOST','MEM','剩余内存',1001,10010002,sysdate,'${MEM_OUT}','','','');
        -- disk
   insert into user_test.MONI_GATHER(MONTR_TYPE,MODULE_TYPE,MONTR_DESC,PARENT_PART_ID,SUB_PART_ID,CREATE_DATE,CONTENT_INFO,EXT1,EXT2,REMARKS)
               values('HOST','DISK','opcrm用户的磁盘剩余空间',1001,10010003,sysdate,'${DISK_OUT}','','','');
   commit;
set feedback on
set heading on
set echo on
exit
!

[ 本帖最后由 sea_soft 于 2008-8-14 09:58 编辑 ]

最佳答案

查看完整内容

别,国足还需要你的支持。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2008-08-13 16:19 |只看该作者
原帖由 sea_soft 于 2008-8-14 13:18 发表
老大,我只能说,你太帅了,以后偶要好好看书,不看球了


别,国足还需要你的支持。

论坛徽章:
0
3 [报告]
发表于 2008-08-13 16:58 |只看该作者
搞定的话,国足就夺冠了

你的意思是再过50年这道题也没人能搞定了?

论坛徽章:
0
4 [报告]
发表于 2008-08-13 17:06 |只看该作者
这题搞不定......

论坛徽章:
0
5 [报告]
发表于 2008-08-13 17:16 |只看该作者
1,2,3题:find查找文件,将结果输出到某个文件用cmmand > urfile的方式。排序用sort。应该就没有什么技术难点了。
4题:
while read a
do
status=$(service $a status)
通过status的值判断是否宕掉
如果(宕掉)
重启之
done < service_list

如果希望它自动执行,将这个脚本放入crontab中

5题:输入man test一切柳暗花明

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
6 [报告]
发表于 2008-08-13 17:24 |只看该作者
可惜国足夺不了冠~~~
PS:top/sar这些命令在solaris中是有的~~

论坛徽章:
0
7 [报告]
发表于 2008-08-13 17:49 |只看该作者
谢谢大家,哈哈,国足为大家带来不少乐趣
以下是刚做的测试,文件名为beta.sh(该目录下有beta.sh  db.sh    db.sql   host.sh四个文件):
#!/bin/sh
#sqlplus -s  user_test/user123@demo_db <<!
#set echo off;
#set heading off;
#set serveroutput on
#set timing on
#set feedback off
find . -name "db*" |while read var
        do echo $var
        done
#set feedback on
#set heading on
#set echo on
#exit
#!
我把
#sqlplus -s  user_test/user123@demo_db <<!
#set echo off;
#set heading off;
#set serveroutput on
#set timing on
#set feedback off

#set feedback on
#set heading on
#set echo on
#exit
#!
这些注释了后,就能执行,显示
./db.sh
./db.sql
但是如果把这些注释打开,就报错:
ln-bes2% beta.sh
SP2-0734: unknown command beginning "find . -na..." - rest of line ignored.
SP2-0042: unknown command "do echo" - rest of line ignored.
SP2-0042: unknown command "done" - rest of line ignored.
我是打算在这个脚本里实现shell和SQL混合编程,但这个错误不知道怎么解决,我的初步打算:
#!/bin/sh
sqlplus -s  user_test/user123@demo_db <<!
set echo off;
set heading off;
set serveroutput on
set timing on
set feedback off
find . -name "db*" |while read var
        do
--文件名入库   
   insert into kf.MONITOR_GATHER(MONTR_TYPE,MODULE_TYPE,MONTR_DESC,PARENT_PART_ID,SUB_PART_ID,
   CREATE_DATE,CONTENT_INFO,EXT1,EXT2,REMARKS)               
   values('CORE','Core_KF','Core_KF',1001,10010008,sysdate,'${var}','','','');
----这后面还有会查找别的文件,也会照这种格式写入表中
        done
set feedback on
set heading on
set echo on
exit
!
不知道这样可行不,但上面那种错误不会解决,请大家多费心帮我一下,有啥办法没,

论坛徽章:
0
8 [报告]
发表于 2008-08-13 18:30 |只看该作者
sqlplus -s  user_test/user123@demo_db <<!
set echo off;
set heading off;
set serveroutput on
set timing on
set feedback off
find . -name "db*" |while read var
        do echo $var
        done
set feedback on
set heading on
set echo on
exit
!
这个意思是在sqlplus里面执行find,你的sqlplus里面有find命令?还是把循环移到外面来吧。

论坛徽章:
0
9 [报告]
发表于 2008-08-13 23:36 |只看该作者
谢谢楼上的,可否给个例子,偶初学,一头雾水中,不清楚怎么把find的结果传给SQL中(这个find结果应该是个数组),谢谢大家,还请大侠不吝赐教,:请大家帮偶看看这种情况怎么解决,搜索了很多帖子,没有看到这种情况的,多谢wink:

论坛徽章:
0
10 [报告]
发表于 2008-08-14 09:09 |只看该作者
ln-bes2% find ./ -name "db*"
./db.sh
./db.sql
可我如果想得到带全路径的文件名,该怎么做?谢谢
比如
/usr/myusr/beta/db.sh
/usr/myusr/beta/db.sql
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP