bash - Bash:在不使用组 ID 的情况下杀死进程和所有子进程
问题描述
我有一个 bash 脚本,它产生子进程,它产生孙子和曾孙进程。
我想杀死一个特定的孩子,而且都是死者。
以下是我尝试过的一些对我不起作用的解决方案:
通过组 ID 杀死。子进程可能具有我不想杀死的相同组 ID 的兄弟进程。
使用
kill $childpid
. 这并没有杀死所有的孙子和曾孙进程使用
kill -9 $childpid
. 这会导致我运行脚本的终端中的文本输出,这并不理想,即使脚本和 kill 命令都将其 stdout 和 stderr 路由到不同的文件使用
pkill -P $childpid
. 这似乎一开始就是我想要的,但是子进程以退出代码零退出。父进程需要知道它的子进程被过早杀死,所以我需要它以 0 以外的代码退出
所以TL;DR,我需要一种方法来杀死一个进程和所有后代进程,而不杀死具有相同组 id 的兄弟姐妹,没有在终端中打印输出,并且退出代码不为零。
做这个的最好方式是什么?
解决方案
推荐阅读
- android - 第二个导航图可以用作嵌套导航图吗?
- c# - ASP.NET Razor 页面模型绑定不起作用
- android - 如何使用卡片创建水平滚动 RecyclerView
- javascript - 寻找解决方法 fullscreenElement iOS Safari (iPhone)
- python - 在没有管理员访问权限的情况下使用 Python 获取 CPU 和 GPU 温度 - Windows
- c# - 如何将用户信息添加到 nlog 错误日志中
- flask - 502 错误的网关烧瓶应用程序部署在 AWS EB 中
- python-3.x - 我可以在 python 中使用变量从 Postgresql 中提取数据吗?
- node.js - 使用 axios、Node.js 连接到 Azure Blob 存储 REST API
- python - 找不到满足要求的版本 github-repo==2019.2.23 (来自 -r /tmp/build_ae8c4ea0_/requirements.txt () (来自版本:无)