免费注册 查看新帖 |

Chinaunix

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

shell的困惑 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
31 [报告]
发表于 2006-04-06 14:24 |只看该作者
情况正常啊。注意我说的是不考虑grep命令本身而计数是不可靠的,不是说按照计数值>=2计数是不可靠的。
当没有先前的脚本运行时,ps只会列出调用当前脚本的命令(让我想起那个经典的小朋友点人数的错误,呵呵,千万别忘了自己!),计数自然会是1。
如果有先前的脚本还在运行时,ps会列出调用自身和至少一个先前脚本的sh命令,计数会>=2。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
32 [报告]
发表于 2006-04-06 14:28 |只看该作者
原帖由 waker 于 2006-4-6 14:17 发表
...
如果是用fork加载的话,当然会产生一个进程, ps命令是否会列出是另一码事
...

你说的对,shell脚本可以作为一个进程。谢谢指正!^_^

论坛徽章:
0
33 [报告]
发表于 2006-04-06 14:33 |只看该作者
我明白什么意思了。就是当返回值为1时这个进程就是它本身,如果为>=2是就是之前还有一个或多个进程在运行。

但是每次返回的值是2这个进程就已经exit了,为什么还会有两个进程呢?

[ 本帖最后由 93237984 于 2006-4-6 14:44 编辑 ]

论坛徽章:
0
34 [报告]
发表于 2006-04-06 14:58 |只看该作者
既然每次启动都会产生两个进程,那我把条件改成:
if [ $ifrunning -gt 2 ]; #大于2就退出,小于等于2就执行应该是没问题吧?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
35 [报告]
发表于 2006-04-06 15:23 |只看该作者
我测试了一下你的例子,情况确实有点奇怪!
在一台Centos4.2上计数开始总是2;但在另一台debian  sarge上竟然出现4的计数!看来还得好好研究一下。汗!

论坛徽章:
0
36 [报告]
发表于 2006-04-06 15:46 |只看该作者
原帖由 woodie 于 2006-4-6 15:23 发表
我测试了一下你的例子,情况确实有点奇怪!
在一台Centos4.2上计数开始总是2;但在另一台debian  sarge上竟然出现4的计数!看来还得好好研究一下。汗!



出现4可就奇怪了,不过我这边用AIX,好像没有4的情况,只有2,有时候是1。
如果确定是2的话那还是可以用>=2做判断的

论坛徽章:
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
37 [报告]
发表于 2006-04-06 15:51 |只看该作者
原帖由 woodie 于 2006-4-6 15:23 发表
我测试了一下你的例子,情况确实有点奇怪!
在一台Centos4.2上计数开始总是2;但在另一台debian  sarge上竟然出现4的计数!看来还得好好研究一下。汗!

每个pipeline都需要一个额外的subshell
这个subshell process的cmdline 都是 $0

如果你用
ps -ef |grep $0|.....|....|
相信会得到5,6,7个

论坛徽章:
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
38 [报告]
发表于 2006-04-06 15:55 |只看该作者
a=$(ps -ef)
echo "$a"|grep proc...|grep -v grep|wc -l

应该不会有问题了

论坛徽章:
0
39 [报告]
发表于 2006-04-06 16:14 |只看该作者
原帖由 waker 于 2006-4-6 15:55 发表
a=$(ps -ef)
echo "$a"|grep proc...|grep -v grep|wc -l

应该不会有问题了



是可以的,但我不理解是什么原因。斑竹能不能解释一下
a=$(ps -ef)
echo "$a"|grep proc...|grep -v grep|wc -l


echo ps -ef|grep proc...|grep -v grep|wc -l

的区别?

论坛徽章:
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
40 [报告]
发表于 2006-04-06 16:17 |只看该作者
to:93237984
原因不是写了么?如果看不懂就暂时放一下吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP