免费注册 查看新帖 |

Chinaunix

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

[系统管理] ping程序的进程为什么是1 [复制链接]

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-16 16:03 |只看该作者 |倒序浏览
  1. [root@my63 ~]# cat te.sh
  2. #!/bin/bash

  3. ping 192.168.1.11 > /dev/null &
  4. [root@my63 ~]# bash te.sh
  5. [root@my63 ~]# ./te.sh
  6. [root@my63 ~]# ps -ef|grep ping
  7. root      1965     1  0 14:09 pts/1    00:00:00 ping 192.168.1.11
  8. root      1967     1  0 14:09 pts/1    00:00:00 ping 192.168.1.11
  9. root      1969  1836  0 14:09 pts/1    00:00:00 grep ping
  10. [root@my63 ~]# type ping
  11. ping is /bin/ping
复制代码
ping命令并不是一个build-in的命令

bash script 不是应该从1fork一个子进程,然后这个子进程因为ping是个外部命令所以会在fork一个子进程的吗?为何这里两种运行方式最后发现ping的父进程都是1

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 2015-06-16 16:33 |只看该作者
本帖最后由 Herowinter 于 2015-06-16 16:45 编辑

回复 1# stupid_lee

你的ping原来的父进程挂了, 被init领养了(reparent).
脚本最后加一句
sleep 600

运行脚本后就可以看到原来ping的父进程号.
   

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
3 [报告]
发表于 2015-06-16 17:34 |只看该作者
回复 2# Herowinter

因为ping 加了后台运行,在脚本后面加的 sleep只有等&的内容执行完了才能执行到sleep

另外我如果直接在终端ping 的话,这个ping进程的父进程是 -bash ,而bash的父进程又是当前终端,在我关闭当前终端的时候,ping程序也灭了并没有被1收养

   

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [报告]
发表于 2015-06-16 17:56 |只看该作者
本帖最后由 Herowinter 于 2015-06-16 18:14 编辑

回复 3# stupid_lee

linux的ping命令不被终止会一直运行下去的,
你关闭终端, 正常结束情况下, 父进程会通知结束子进程,
所以bash会关闭ping.

可以这样模拟, 在一个终端敲ping 192.168.1.11 &,
另一个终端找到ping进程的父进程并kill -9之, 过一会ping
就被1(init)领养了.

论坛徽章:
9
射手座
日期:2014-07-29 13:05:07双子座
日期:2015-01-11 17:01:522015年亚洲杯之朝鲜
日期:2015-02-01 16:14:282015亚冠之阿尔艾因
日期:2015-06-04 17:54:40数据库技术版块每日发帖之星
日期:2015-08-02 06:20:00数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-11-26 06:20:0015-16赛季CBA联赛之天津
日期:2016-06-20 17:09:2015-16赛季CBA联赛之青岛
日期:2017-02-26 15:54:19
5 [报告]
发表于 2015-06-17 09:37 |只看该作者
回复 4# Herowinter


    果真是这样的,不过既然加了 & 符号的情况下父进程死了会被init进程收养,那么nohup、setsid之类的命令好像就显得多余了............


英雄大神怎么看 & 与nohup、setsid呢

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2015-06-17 10:14 |只看该作者
回复 4# Herowinter

可怜的ping,其父惨遭暗杀,幸好被国民父亲领养~
   

论坛徽章:
768
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2015-06-17 11:11 |只看该作者
回复 6# yestreenstars

@stupid_lee
前段时间我在工作中碰到过类似的问题, 楼主可以搜索下
Linux孤儿进程 有很多资料的.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP