免费注册 查看新帖 |

Chinaunix

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

如何获取程序启动后的PID?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-17 23:25 |只看该作者 |倒序浏览
脚本步骤:
1、su - USER -c start   #用指定用户启动一个程序
2、获取上一步启动的进程使用的PID

在不用ps -ef 查看进程的前提下,怎么能获取上一个程序的PID

在一个程序启动时系统赋予一个PID,能否获取到这个PID 然后把他存变量里去。
试过 $$ ,不行,它获取的是执行启动命令的进程PID,而不是执行命令产生的进程PID

论坛徽章:
0
2 [报告]
发表于 2007-03-18 00:11 |只看该作者
PID=`echo "$$"`

论坛徽章:
0
3 [报告]
发表于 2007-03-18 09:56 |只看该作者
原帖由 轩静天 于 2007-3-18 00:11 发表
PID=`echo "$$"`

上面引用的答案有误,一试便知。

楼主首先需要明白,su - user -c cmd会起两个进程,一个是su的,一个是cmd的。我猜您是想要cmd的进程pid,是么?
然后还要知道,脚本中的命令是串行执行的,也就是说是执行完su - user -c cmd这条命令,才会继续执行下面的,这时,su和cmd的进程都已结束,您取不到也不应该取到它们刚才使用的pid。
如果用
  1. su - user -c "cmd" &
复制代码
,您可以在下面的语句使用$!变量来获得su进程的pid,然后通过ps -ef找到父进程为$!的进程的pid,就是cmd进程的pid。如果依您的要求,不用进程快照,恐怕是不可能取到cmd的进程pid。

[ 本帖最后由 一梦如是 于 2007-3-18 12:26 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-03-18 22:59 |只看该作者
不好意思,只是看了楼主的标题来回答问的,没有仔细看楼主的内容.

有一个命令:waitpid,可以获得某进程与之相关联进程的PID,但得测试一下,在
命令行su - USER -c start 下,不知道START与SU在系统里是如何管理,是否会认为
两个进程有关联,不过也可以用START的PID来追踪SU,不过就一定得使用PS -EF的命
令了.

感谢二楼指正.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP