gpt4 book ai didi

linux - 如何确保正在运行的进程是我期望正在运行的进程?

转载 作者:IT王子 更新时间:2023-10-29 00:53:39 24 4
gpt4 key购买 nike

上下文:

我有一个管理一系列第三方守护进程的 linux[1] 系统,与这些守护进程的交互仅限于 shell[2] 初始化脚本,即只有 {start|restart|stop|status} 可用。

问题:

进程可以采用先前运行的进程的 PID,通过使用其 PID 检查正在运行的进程是否存在来检查进程的状态。

示例:

进程 A 使用 PID 123 运行,随后终止,进程 B 使用 PID 123 初始化,状态命令以不真实(错误的)“OK”响应。换句话说,我们仅通过 PID 检查进程是否存在以验证进程是否正在运行,我们假设如果存在具有此 PID 的进程,则它就是有问题的进程。

建议的解决方案:

  1. 使用 PID 询问进程,以确保命令/守护程序按预期运行作为 PID。这个解决方案的问题是命令和 PID 都需要匹配;因此需要维护和保持多位信息同步,并增加错误/边缘条件的复杂性。
  2. 将 PID 文件的创建时间与进程的启动时间相关联,如果进程在 PID 文件创建时间的某个增量内,我们可以相当确定命令/守护进程正在按预期运行。

除了使用该 PID 运行的进程之外,是否有标准方法来验证进程/PID 文件的真实性? IE。我(作为系统)想知道您(进程)是否正在运行,以及您是否是我认为的那个人(A 而不是 B)。

假设我们选择实现上面提出的第二种解决方案,那么 PID 创建时间和进程启动时间之间的置信区间/增量是多少才合理?在这里,合理意味着类型 1/类型 2 错误之间可以接受的折衷。

[1] CentOS/RHEL[2] bash

最佳答案

文件内容:

/proc/{PID}/cmdline

是用于启动进程的命令行。这是你需要的吗?

关于linux - 如何确保正在运行的进程是我期望正在运行的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com