关于Linux下前后台程序的一点疑惑(& , (cmd &), setsid )--- (kafka-stop-server.sh不工作问题)

前几天启动kafka时一不小心这样操作的:  $ (./bin/kafka-start-server.sh &), 后来执行 $ kafka-stop-server.sh 却发现无法停止 kafka进程。

查看kafka-stop-server.sh这个脚本,发现里面末尾用的是  kill -SIGINT pid. 我的理解是 SIGINT只能 kill掉和前台程序在同一个进程组的进程,类似 ctrl+c;而我把kafka启动成了一个非前台进程组的后台进程,因而kill不掉。

顺便查了下资料,目前的理解如下:

以一个 ping程序为例:

<1>    $ ping www.baidu.com                     ===> 开启一个前台程序

<2>    $ ping www.sohu.com &                  ===> 开启一个后台程序,但该后台程序和当前的bash(shell)属于一个进程组, 且属于相同会话(session)

<3>    $ (ping www.sohu.com &)               ===>  开启一个后台程序,但该后台程序和当前的bash(shell)不是同一个进程组(其父进程pid为1, init), 却属于相同会话(session)

<4>    $ setsid ping www.sohu.com         ===>  开启一个后台程序,但该后台程序和当前的bash(shell)既不是同一个进程组(其父进程pid为1, init),也不是相同会话(session)

以上结论可以利用  $ ps -l | grep ping  来验证。


有个疑惑是,针对<2>, 如果我通过 kill -9 把 ping程序的父进程,即那个当前bash进程删掉,按道理ping进程是不是该被自动杀掉?可通过测试,我发现<2>中的ping程序最终也被init托管了。请路过同学帮忙指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值