【问题标题】:No such process at killing command after sometime一段时间后在杀死命令时没有这样的过程
【发布时间】:2016-11-02 05:17:14
【问题描述】:

我想从 bash 运行一个应用程序并在一段时间后将其终止。我找到了this answer

xmessage "Hello World" & pidsave=$! sleep 10; kill $pidsave

但结果是这样的:

[4] 23034
[3]   Terminated              xmessage "Hello World"
bash: kill: (22985) - No such process

如您所见,xmessage 并没有停止,它的窗口仍然存在。当然this 有效:

your_command & sleep 20; kill $!

第一个命令有什么问题?与第二个命令相比,它更喜欢什么?

【问题讨论】:

    标签: bash time timeout


    【解决方案1】:

    进程xmessage终端已经在你运行kill命令杀死它时。

    可以在这里看到:

    [3]   Terminated              xmessage "Hello World"
    

    所以之后kill-ing 没有意义。


    回答为什么窗口仍然存在:

    许多进程产生另一个进程,然后杀死自己。在这种情况下会发生这种情况,您通过从终端运行 xmessage 生成的进程正在生成另一个进程(带有窗口的进程),然后退出。孩子继续运行,并在父母去世时成为孤儿(init 成为它的新父母,因为init 继承了所有孤儿)。

    【讨论】:

    • 但是为什么'xmessage'窗口仍然存在?
    • 有没有办法检测那些产生的进程并杀死它们?
    • @hasanghaforian 是的,获取init (PID 1) 的子级列表。您可以使用系统上可用的任何常用用户空间工具,例如pgrep -lP 1.
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2011-09-09
    • 2012-10-18
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多