os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行

2024-01-06

在我的 ubuntu 服务器上运行以下命令:

python -c 'import os; os.kill(5555, 0)'

这样做是为了查看 pid 5555 是否正在运行。根据我的理解,如果 pid 没有运行,这应该会引发 OSError 。这不会对我引发 OSError,这意味着它应该是一个正在运行的进程。但是当我跑步时:

ps aux | grep 5555

我看到没有进程以该 pid 运行。这种情况也会发生在该一般范围内的其他几个 pid 上,但不会发生在 555 或 55555 上。

有谁知道为什么 os.kill 不会像预期的那样引发 OSError 吗?

注意:这是在 python 2.5.1 下运行的。


linux下,各个进程and每个线程都有不同的pid。os.kill不关心你是否有线程 pid,或者任务 pid,但是ps通常不显示线程 pid。

例如,在我的机器上,PID 8502 的进程正在运行线程,您可以像这样看到

$ ls /proc/8502/task/
8502  8503  8504  8505  8506  8507  8511  8512  8514  8659

注意8503没有出现在进程列表中

$ ps aux | grep [8]503
$

然而使用更多ps参数你可以看到它

$ ps -eLf | grep [8]503
ncw       8502     1  8503  0   10 10:00 ?        00:00:00 /usr/lib/virtualbox/VBoxSVC --automate

(正在寻找[8]503意味着grep不会出现 - 这是一个古老的 UNIX 技巧!)

现在让我们看看它是否还活着

$ python
Python 2.6.4 (r264:75706, Nov  2 2009, 14:44:17)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Loaded customisations from '/home/ncw/.pystartup'
>>> import os
>>> os.kill(8503, 0)
>>>

这重复了你的问题。

我想如果你这样做

ls /proc/*/task/5555

or

ps -eLf | grep [5]555

您将看到罪魁祸首线程。

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

os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行 的相关文章

随机推荐

  • glDrawArrays 之间的 glBufferSubData 调用重整数据

    这好像是glBufferSubData正在覆盖或以某种方式破坏我之间的数据glDrawArrays来电 我正在使用 Windows 7 64 位操作系统 并使用适用于我的 Nvidia GeForce GT520M CUDA 1GB 的最新
  • 禁用或删除 apc

    我在 ubuntu 11 04 linux 上安装了 APC 我想进行一些性能基准测试 看看没有 APC 的 PHP 的速度有何改进 但我不知道如何禁用 删除 APC 我尝试清空 apc ini 文件 但没有成功 尽管如此 在我第一次加载页
  • 使用 UIModalPresentationFormSheet 的模态视图出现在屏幕外

    我有一个 UIViewController 实现 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceOrientation Return
  • 身份服务器 4 上出现“客户端密钥验证失败”错误

    我正在尝试使用 client credentials 从我的 Identity Server 4 获取访问令牌 我想我几乎通过搜索完成了 Google 页面 但我什么也没找到 所以 请 这是我的 GetClients 方法 My PostM
  • SQL Server:为什么默认情况下禁用 xp_cmdshell?

    默认情况下禁用扩展存储过程 xp cmdshell 的安全原因是什么 您可以在中找到解释PermissionsSQL Server 部分文档 http msdn microsoft com en us library ms175046 as
  • Coldfusion 将 onRequestEnd() 与 Application.cfm 文件结合使用

    我正在使用一个遗留应用程序工作 该应用程序是基于使用Application cfm文件而不是Application cfc files 需要能够在请求处理后运行代码 基本上 我想使用
  • django-storages 获取完整的 S3 url

    我有几个课程使用 django storages 和 Amazon S3 class Cache models Model identifier models TextField blank True null True cache fil
  • python 中的 p5-js map() 函数

    python中有没有像p5 js的map 这样的函数 python 中的 map 根本不一样 据我了解 在 python 中 它对序列中的所有可迭代应用相同的函数 但我需要一些可以完成 p5 js 中的 map 函数功能的东西 感谢您的帮助
  • 如何找到使用 gdb 定义的文件?

    当我打字时list mystruct进入 gdb 我收到用于定义 mystruct 的代码行 我怎样才能要求 gdb 给我它正在读取的文件来打印这些行 从 gdb python 接口获取该文件会更好 越容易解析越好 Thanks 为了显示类
  • 从输入中获取整数值并动态生成输入

    我想在焦点从 移开 时动态获取输入End Date 输入并传递天数到 JQuery 并生成它 我尝试了这段代码但不起作用 从几天中获取价值并生成面板数量 就是这样
  • C#:寻求快速数据结构以将像素添加到分区 HSB 直方图

    在我的应用程序中 我使用快速非托管代码从多个图像读取 RGB 像素值 然后将它们转换为 HSB 颜色 现在我想使用以下分区构建 HSB 直方图 色调 18 个分区 从 0 360 产生 20 个间隔 饱和度 3 个分区 从 0 1 产生 0
  • NHibernate 查询建模

    通常我会将我的 criterias hql 查询放在与实体相关的存储库 dal 类中 但最近我一直在考虑添加另一个表示查询是什么的抽象 这将使我有可能将常见行为添加到基类中的所有查询 例如分页 等 现在这些就是我的组件 与 nhiberna
  • 在常规发布请求中设置标头

    我需要设置一个header in a post请求 授权 request token 我尝试过使用 wslite 和 groovyx net http HTTPBuilder 但我总是得到 401 未授权 这意味着我无法正确设置标头 我也想
  • 在 terraform 中构建输出地图

    我有一个要创建的用户列表 一个 sns 主题列表以及创建策略以向用户授予主题权限 这些都是针对用户的命名空间 Given main tf provider aws region eu west 1 profile terraform mod
  • 将调用命令的输出封装在变量中 - PowerShell

    我有一个在远程计算机 来自 DC 上安装远程桌面服务的脚本 我现在正处于检查 RDS 是否安装在连接代理 服务器 和连接主机 服务器 上的阶段 我想使用调用命令 因为远程 powershell 会话似乎太复杂了 这是我的代码 res Inv
  • 在 Windows 中使用子进程运行 python 脚本。来自 emacswiki 的 Python 代码检查器包装器产生相同的错误

    所以我正在尝试设置 emacs wiki 中建议的 python 代码检查器 但是 我无法在命令 shell 中运行这些脚本 更不用说 emacs 了 该部分可在此处找到 http www emacswiki org emacs Pytho
  • 将字符串存储到c中的数组中

    据我所知 我可以创建一个包含项目的数组 例如 char test1 3 arrtest ao 123 但是我如何将我的输入存储到上面的代码之类的数组中 因为我只能将其编码为 input 10 scanf s input or gets in
  • 在运行时更改 iOS 模拟器的当前区域设置

    在开发一组用于将数值和日期转换为字符串的日期计算和语言规则时 我正在编写断言字符串格式化方法的结果的测试 一个虚构的断言可能如下所示 NSAssert dateString isEqualToString Three days until
  • Python-撤消标准输出重定向

    所以我知道从 在Python中将标准输出重定向到 无 https stackoverflow com questions 6735917 redirecting stdout to nothing in python 您可以抑制 print
  • os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行

    在我的 ubuntu 服务器上运行以下命令 python c import os os kill 5555 0 这样做是为了查看 pid 5555 是否正在运行 根据我的理解 如果 pid 没有运行 这应该会引发 OSError 这不会对我