进程卡在退出处,显示为僵尸但无法收获

2023-12-02

我有一个由其父级监控的进程。孩子遇到了一个错误,导致它调用abort。该进程不会篡改中止进程,因此它应该按预期进行(转储核心、终止)。父级应该检测子级的终止并触发一系列事件来响应失败。子进程是多线程且复杂的。

这是我看到的ps:

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  4929  1272  20   0  85440  6792 wait   S+   pts/2      0:00 rxd
1  1000  4930  4929  20   0      0     0 exit   Zl+  pts/2     38:21 [rxd] <defunct>

所以子进程(4930)已经终止。它是一只僵尸。正如预期的那样,我无法附加到它。然而,父级 (4929) 仍然被阻止:

int i;
// ...
waitpid (-1, &i, 0);

所以看起来这个孩子是一个僵尸,但不知何故还没有完成其父母收割它所需的一切。这WCHAN现场exit我认为这是一个有价值的线索。

平台为64位Linux,Ubuntu 13.04,内核3.8.0-30。孩子似乎没有倾倒核心或做任何事情。我已经离开系统几分钟了,没有任何变化。

有谁知道可能导致此问题的原因或我能做些什么?

Update:另一个有趣的信息——如果我kill -9父进程,子进程消失。这有点令人困惑,因为父进程很简单,只是阻塞waitpid。另外,当这个问题发生时,我没有得到任何核心转储(来自孩子)。

Update:看来孩子被困在schedule,调用自exit_mm,调用自do_exit。我想知道为什么exit_mm会打电话schedule。我想知道为什么杀死父母会解除它。


我终于弄明白了!该进程实际上一直在做有用的工作。该进程保存了对a的最后一个引用large文件在一个slow文件系统。当进程终止时,对该文件的最后一个引用将被释放,迫使操作系统回收该空间。文件太大,需要数万次 I/O 操作,耗时 10 分钟或更长时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程卡在退出处,显示为僵尸但无法收获 的相关文章

  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 在初始化脚本中切换用户?

    这是我的 Ubuntu 工作站上的初始化脚本 我需要以除 root 之外的其他用户身份运行命令 但我就是不知道应该如何完成它 两者都不sudo u or su newuser似乎有效 剧本 respawn console none star
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • PHPStorm - 无效的后代文件名

    我正在尝试将 Windows 7 PC 上的本地 PHPStorm 项目与 Ubuntu 服务器同步 当我尝试任何类型的连接 例如 测试 SFTP 连接 时 它会失败并显示 Invalid descendent file name C np
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • opencv_contrib编译错误:类没有成员

    我必须实现 SURF 算法来进行图像拼接 我在使用列出的库时遇到了问题here https stackoverflow com questions 33560251 opencv 3 0 0 ubuntu 14 04 nonfree non
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 更改“/usr/bin/”的所有权:不允许操作

    我刚刚改变了我的所有者 犯了一个巨大的错误 usr bin from root对一个普通人user 每当我尝试执行时 sudo chown root usr bin这给了我 chown changing ownership of usr b
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed

随机推荐

  • HTML 元素在使用 jquery 时不会淡出

    我有一个小型网络项目 您可以在这里看到 http seegermattijs be pickone 当您插入两个项目时 选择一个按钮应该淡入 不幸的是它不会淡出 我使用以下代码 bigBtn fadeIn slow 一开始我让 bigBtn
  • 具有独立 where 子句的多列 - SQL Pivot?

    是否可以采用以下方式构建的表格 ID Month Info1 Info2 1 1 A B 1 2 C D 1 3 E F 2 3 G H 2 4 I J 最终形成这样的表格 ID JanInfo1 JanInfo2 FebInfo1 Feb
  • 如何运行所有 Ruby 脚本并出现警告?

    通过修改 Unix 或 Windows 环境变量 如何始终在默认情况下打开警告的情况下运行 Ruby 脚本 理想情况下 即使我间接运行脚本 例如通过 Rake 这也应该起作用 而不仅仅是直接运行脚本时 基于评论这个答案 The RUBYOP
  • 简单的“Hello World”风格的程序在执行开始后很快就会关闭

    我正在通过一本叫做 C 的书学习 C C 初学者指南第二版 当我运行可执行文件时 它会显示它半秒钟并关闭它 我在 Windows 8 1 上使用 Microsoft Visual Studio Express 2013 for Window
  • 如何在 XAML 中将 List 作为 ItemSource 绑定到 ListView?

    我正在学习 WPF 希望有一个类似于 LinkedList 的集合 以便我可以在其中添加和删除字符串 我想要一个ListView通过数据绑定监听该集合 我怎样才能将一个简单的列表集合绑定到ListView在 XAML 中 我的想法 不起作用
  • 从当前目录执行命令,不带点斜杠,如“./command”

    我觉得我错过了一些非常基本的东西 所以如果这个问题很迟钝 我很抱歉 自从我使用 bash shell 以来 我就一直在努力解决这个问题 假设我有这样的结构 bin command executable 这将执行 bin command 然后
  • 如何比较整数与整数数组

    我是安卓新手 我想知道如何比较整数和整数数组 有一组整数数组 Ex array int 1 2 3 4 和单个整数int i 2 这里我想比较这两个整数 如果单个整数出现在数组整数中 我想要打破这个过程 for i 0 i
  • 网格列数据在语义 UI 反应中重叠?

    https codesandbox io s m3ljr4zl8p example js 我没想到第 1 列数据会开始重叠到第 2 列数据中 而不是下降 因为它现在超出了网格列宽度 解决这个问题的办法是什么 列不重叠 是你的 p 元素比列占
  • Github Actions - 一个操作完成后触发另一个操作

    我有一个动作 ayaml文件 用于将 docker 映像部署到 Google Cloud Run 我希望收到告知构建和推送结果的 Slack 或电子邮件消息 构建操作完成后如何触发消息操作 是否可以获得构建操作的结果 有 2 个选项可以执行
  • 在 SAS 中按条件查找 2 个数据集之间的匹配项

    我正在尝试通过我的同学和我在使用 SAS 的编程课程中使用的 jsl 文件中现有的 for 循环来提高处理时间 我的问题 SAS 是否提供可以复制搜索和匹配条件的 PROC 或语句序列 或者一种浏览未排序文件而不逐行查找匹配条件的方法 我们
  • 在 PhantomJS 中评估似乎不起作用

    我对 JavaScript 魔法有疑问 当我执行这段代码时 var page require webpage create var url http google com page open url function status if s
  • 同一对象的哈希值不同,Swift,Hashable

    里面的Hashable我们可以看到 Hash values are not guaranteed to be equal across different executions of your program Do not save has
  • 从最后一行开始搜索 mysql 表

    所以 我知道关系数据库上不存在 最后一行 这样的东西 但我找不到更好的词来解释我想要做什么 我有一个如下所示的表 其中id is an AUTO INCREMENT场和time是当前的 Unix 时间戳 请注意 我可以为不同的行使用相同的时
  • Python 生成器表达式括号奇怪

    我想确定列表是否包含某个字符串 因此我使用生成器表达式 如下所示 g s for s in myList if s myString any g 当然我想内联它 所以我这样做 any s for s in myList if s myStr
  • Swift 上的常见 Equatable 类

    我需要容器Any Equatable中的项目NOT Generic类 例如故事板中初始的 UI 类 我需要这样 var items Equatable 但它不起作用 Equatable need Generic 不存在共性的问题Equata
  • Sharepoint 2013:通过 REST API 确保用户

    我正在尝试通过 REST API 自动确保某些用户 我的 REST 通话 ajax url blablabla api web ensureuser type POST data logonName i 3A0 23 w 7Cdomain
  • 从 WCF 服务公开枚举的 DescriptionAttribute

    如何使用 WCF 将服务中的枚举值中的描述属性暴露给客户端或 Web 引用 或者 如何使用 WCF 向客户端公开带有描述属性的枚举 虽然公开描述属性不公开 但客户端中仅公开枚举值 我想要枚举中描述属性的值 您不能强制执行此操作 mex WD
  • 如何在没有类的情况下生成对象的新实例?

    问题 如何从该类的实例生成该类的新实例 我发现了什么 考虑下一个类及其实例 Create a new class var Foo function Foo console log New instance of FOO Foo protot
  • 我可以隐藏控制器并查看名称 cake php 2 吗?

    我正在使用 cake php 由于某种原因我想从 url 中隐藏控制器和操作名称 当前网址我们喜欢 http 192 168 1 31 home this is test 其中 home 是控制器名称 this is test是动态的 sl
  • 进程卡在退出处,显示为僵尸但无法收获

    我有一个由其父级监控的进程 孩子遇到了一个错误 导致它调用abort 该进程不会篡改中止进程 因此它应该按预期进行 转储核心 终止 父级应该检测子级的终止并触发一系列事件来响应失败 子进程是多线程且复杂的 这是我看到的ps F UID PI