免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: siyecaoliu
打印 上一主题 下一主题

[系统管理] 监控某个进程cpu占用率是否小于2% [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-09-02 16:06 |只看该作者
这个进程君地位太低了,木办法~
回复 9# love_shift


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
12 [报告]
发表于 2014-09-02 19:39 |只看该作者
  1. while true; do
  2. cpu=$(ps xua | grep "./daemon"|grep -v grep |awk '{print$3}')
  3. if [ ${cpu%%.*} -ge 2 ]; then
  4. ps aux|grep "./daemon"|grep -v grep|awk '{print$2}'|xargs -r kill -9
  5. break
  6. else
  7. sleep 300
  8. continue
  9. fi
  10. done
复制代码

论坛徽章:
0
13 [报告]
发表于 2014-09-03 10:04 |只看该作者
试过了,这个脚本可以运行呢,谢谢啦
还有点问题想请教下:
1.我在十三问中有看到${file%%.*}:拿掉第一個 .  及其右邊的字串
但是"."不是特殊字符吗,这里怎么可以用来直接匹配普通字符"."呢
2.将cpu的小数位去掉,是因为浮点数不能参与运算吗
3.动态刷新命令,比如top可以用在脚本中吗,如果不能的话,为什么呢
回复 12# bikkuri


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
14 [报告]
发表于 2014-09-03 11:22 |只看该作者
不存在特殊字符的问题,结果你也看到了。
浮点数确实不能参与运算,但是并不是说因为浮点数不能参与运算所以把cpu的小数位去掉,而是不需要小数位所以把cpu的小数位去掉。只要cpu的整数位大于等于2,就说明cpu占用率大于2%。这很好理解。
动态刷新命令太耗资源,根本没必要。如果你对实时性要求很高的话,可以缩短sleep的时间。如果不sleep一直循环动态刷新的话,程序会一直占用cpu资源。


siyecaoliu 发表于 2014-09-03 10:04
试过了,这个脚本可以运行呢,谢谢啦  
还有点问题想请教下:
1.我在十三问中有看到${file%%.*}:拿掉第一個 .  及其右邊的字串
但是"."不是特殊字符吗,这里怎么可以用来直接匹配普通字符"."呢
2.将cpu的小数位去掉,是因为浮点数不能参与运算吗
3.动态刷新命令,比如top可以用在脚本中吗,如果不能的话,为什么呢

论坛徽章:
0
15 [报告]
发表于 2014-09-03 11:35 |只看该作者
谢谢大侠的回答,还是有点疑问
我将脚本做了简单修改
  1.        cpu=2.345
  2.         if [ ${cpu%%\.*} -ge 2 ]; then
复制代码
发现这样也是可以正确运行的,最终./daemon这个进程会被kill,这怎么解释"."是个普通字符呢
回复 14# bikkuri


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
16 [报告]
发表于 2014-09-03 12:46 |只看该作者
本帖最后由 bikkuri 于 2014-09-03 12:48 编辑

cpu=2.345的话,${cpu%%.*}=2
满足${cpu%%.*} -ge 2这个条件,所以进程会被杀掉。
${cpu%%\.*}和${cpu%%.*}没区别。
如果你非要用小数的话,也不难,比如你设定cpu占用率超过2.1%的情况下才杀进程,那你可以把cpu占用率放大10倍,然后丢掉小数部分,再跟21进行比较。

论坛徽章:
0
17 [报告]
发表于 2014-09-03 15:05 |只看该作者
本帖最后由 siyecaoliu 于 2014-09-03 15:09 编辑

放大十倍不是还是要用乘法吗,浮点数还是没有办法使用啊
对普通字符、特殊字符还是不知道要怎样区别,
不明白啊 感觉自己基础太差了~
回复 16# bikkuri


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
18 [报告]
发表于 2014-09-03 16:01 |只看该作者
放大10倍就是小数点右移一位。不需要用乘法。

siyecaoliu 发表于 2014-09-03 15:05
放大十倍不是还是要用乘法吗,浮点数还是没有办法使用啊
对普通字符、特殊字符还是不知道要怎样区别, :d ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP