免费注册 查看新帖 |

Chinaunix

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

文中脚本异常退出后CPU利用率为何明显增高? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-11 16:55 |只看该作者 |倒序浏览
脚本如下(此脚本由用户调起):
trap "MyExit" 1 2 3 5 15
while :
do
select choice in `ls /home/* |grep -v "No such file or directory"`  
    do
                DATE=$choice
                echo "Date is $choice"
                break
    done
printf "        Are you sure ? [Y] :>"
        read TEMP
        if [ "$TEMP" = "Y" ]
        then
                break
        fi
done


有一点搞不太清楚。当用户调起脚本后,执行过程中(等待输入时)如果直接关闭整个用户终端连接。
系统会接管用户shell,刚才执行的shell的父进程也会变为1。

现象是此时系统CPU利用率会突然增高(CPU的sys利用率明显增大。后发现系统在循环fork子进程。
应该是在循环echo。

问题是用户异常中断后,系统会给用户执行中的shell抛出怎样的信息?为什么会满足循环条件?
正常执行时,会等待用户输入相应信息后,继续执行。系统接管后就不用等待输入了吗? 谢谢!

[ 本帖最后由 ugliness 于 2006-6-12 12:27 编辑 ]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2006-06-11 17:37 |只看该作者
系统的bug吧?

论坛徽章:
0
3 [报告]
发表于 2006-06-12 07:33 |只看该作者
不是Bug啊,你可以自己写个类似的shell,找台机器telnet过去执行,然后X掉窗口试一下,CPU马上就上去.
异常退出后就会不停的循环,为什么啊?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2006-06-12 08:17 |只看该作者
X掉窗口进程马上就没了

论坛徽章:
0
5 [报告]
发表于 2006-06-12 12:26 |只看该作者
sorry前面还少了一行(while上面)
trap "MyExit" 1 2 3 5 15
不太明白.还请解释.谢谢!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2006-06-12 12:30 |只看该作者
MyExit的代码在什么地方?
如果是
MyExit (){
MyExit|MyExit|MyExit|MyExit
}
当然会快速消耗资源

论坛徽章:
0
7 [报告]
发表于 2006-06-12 12:42 |只看该作者
trap "MyExit" 1 2 3 5 15
read -p "kjdlf"
while :
do
echo "jkdlf"
done
这个shell和刚才那个还不同,执行后,直接X窗口,可以看到CPU剩余id为0.而切全是us占用,sy很少.
而之前的shell执行退出后.sy会上升40%左右.CPU利用率不会达到100%.
何解.谢谢指教!

论坛徽章:
0
8 [报告]
发表于 2006-06-12 12:45 |只看该作者
请问trap是怎么用的.他会去找shell中定义的函数吗?
MyExit只是在开头出现。shell中没有定义。
我怎样察看一下MyExit()?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2006-06-12 13:04 |只看该作者
type MyExit

论坛徽章:
0
10 [报告]
发表于 2006-06-12 13:05 |只看该作者
原帖由 ugliness 于 2006-6-12 12:45 发表
请问trap是怎么用的.他会去找shell中定义的函数吗?
MyExit只是在开头出现。shell中没有定义。
我怎样察看一下MyExit()?



trap “command” sigles   
如果MyExit在shell中没有定义的话,检查你执行脚本的当前目录有没有MyExit文件,trap也可以把要执行的命令单独放在一个文件中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP