【问题标题】:How to interact with a process with its PID如何通过 PID 与进程交互
【发布时间】:2012-07-24 03:07:59
【问题描述】:

我正在使用 Ubuntu 12.04 。我想知道如何通过其 PID 对进程进行操作。我不知道这是否可能。如果可能的话,请帮助我。操作是指进程的状态、属性以及通过它向进程发送命令和数据的PID。

编辑:状态表示它的工作统计信息,例如它消耗了多少 RAM。属性意味着重新分级该过程的信息。我想在这里了解的主要内容是关于通过其 PID 发送命令/数据以进行处理。

【问题讨论】:

  • 什么状态?什么属性?什么命令? (类 Unix 系统支持 signals,请参阅 signals(7) 了解可以向进程发送什么的简单示例。)
  • @sarnold 谢谢,我已经编辑了我的帖子:D
  • 您是否试图从命令行随便检索这些信息?您是否尝试从程序中做到这一点?如果是这样,您使用的是什么编程语言? “通过 PID 向进程发送命令和数据”是什么意思?请举个例子,以帮助缩小问题范围。
  • 通过使用 C 或 Python 我想联系我的进程,我想对其进行操作

标签: linux bash process


【解决方案1】:

procfs 是你应该看看的东西。它提供了有关该过程的大量信息。这是manpage for proc(5)。 基本上,你 cd 到 /proc/$PID 并且所有这些伪文件都包含你应该能够查看的信息。

否则,一个好的程序是top,或者更好,htop。它可以发送各种信号,并且可以观察到很多信息(状态、mem 使用情况、cpu 使用情况……),真的很棒。

除此之外,尚不清楚您要做什么,所以我保持一般。如果你想像 sarnold 所说的那样进行 IPC(进程间通信),信号可能是要走的路,或者 mmap。 (内存映射文件)

【讨论】:

  • 确定如何发送一些信号来处理。我的意思是通过PID向进程发送一些变量或命令。
【解决方案2】:

不同的程序有不同的方式将进程id作为参数。手册页是你在这里的帮助。

现在,例如top 将提供大部分基本系统统计信息。要获得进程的最高结果,比如X,此命令将为您提供所需的结果top -n1 -b -p <pid of X>

此外,/proc/<pid> dir 将拥有所有必要的系统统计信息,您只需要知道在哪里以及如何读取这些数据。

【讨论】:

    【解决方案3】:

    ps、kill 和 top 常用于与进程交互,请阅读它们的手册页。

    ps 提供快照,通常是从 proc 名称中获取 pid:

    例如ps aux | grep -i sshd

    top 提供半连续的反馈(如可配置的 Windows 任务管理器...排序)

    在我看来,top 会很好地了解 mem 的使用情况。不过,您需要使用 top 的交互式命令来配置以获得最佳输出。按 'o' 进行排序,按 'f' 进行我认为的字段,请阅读这个人。

    kill 默认发送 SIGTERM(或者它停止进程的东西)或使用 kill -9 如果 proc 处理程序忽略 SIGTERM,kill -s SIGNAL 可用于发送任何信号,尽管像 SIGSTOP(停止 proc)和SIGCONT(继续 proc)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多